我正在制作一個在不同 x 和 y 坐標處有障礙物的游戲,我將所有障礙物放入一個串列中,如下所示:
var list = [{x:200, y:400},{x:120, y:400},{x:170, y:400}];
我試圖找到具有最大 x 值的物件。對于這些物件,是否有某種 max() 函式?所以我可以找到最大的物件? Max X: 200 另外,如果我的問題很草率并且有一些錯誤,請原諒我,我還是個12歲的孩子,不經常發現這些錯誤。
uj5u.com熱心網友回復:
首先,您展示的不是 JavaScript 中的正確物件。我猜您想展示的正確串列如下所示?
var list = [
{ x: 200, y: 400 },
{ x: 120, y: 400 },
{ x: 170, y: 400 }
]
然后,如果你想獲得最大值,試試這個:
function getMaxValue(list, key) {
const keyArray = list.map(l => l[key])
return Math.max(keyArray)
}
通過使用上面的函式,如果你想找到最大的 x,試試getMaxValue(list, 'x'). 如果你想找到最大的 y,試試getMaxValue(list, 'y')
uj5u.com熱心網友回復:
您可以使用Array.reduce:
var list = [{
x: 200,
y: 400
}, {
x: 120,
y: 400
}, {
x: 170,
y: 400
}];
const res = list.reduce((a,b) => a = b.x > a.x ? b : a, list[0])
console.log(res)
uj5u.com熱心網友回復:
要查找具有最大值 x 的物件,請使用該Array#filter()方法僅回傳具有由 確定的最大值的物件Math.max( ...arr )。的0索引([0])保證回傳的物件; 如果有兩個以上的物件,將回傳第一個:
const oMaxX = list.filter(obj => obj.x === Math.max( ...list.map(a => a.x) ) )[0];
演示
顯示代碼片段
const list = [
{ x: 200, y: 400 },
{ x: 120, y: 400 },
{ x: 170, y: 400 }
];
const oMaxX = list.filter(obj => obj.x === Math.max( ...list.map(a => a.x) ) )[0];
console.log( oMaxX );
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/358311.html
標籤:javascript 数组 目的 最大限度
