查找对象数组的最低值

Finding lowest value of an array of objects

我目前正在制作一个有障碍物的游戏,我想找到具有最低 X 值的对象。 这是数组的示例。

var array = [{x:500, y:400}, {x:80, y:400}, {x:900, y:400}];

我希望能够确定该组中最低的 X 是多少 (80) 并且 return 它对我来说是什么。 有什么办法吗?

你可以使用 lodash

var array = [{
  x: 500,
  y: 400
}, {
  x: 80,
  y: 400
}, {
  x: 900,
  y: 400
}];
console.log(_.minBy(array, 'x'))
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js"></script>

let min = Infinity
for (var i=0; i<array.length; i++){
    if (array[i].x<min) min = array[i].x
}

这里是您的答案。可能有更简单的方法来做到这一点,但他完成了工作。

您不需要对数组进行排序或使用外部库。您可以使用 Array.prototype.reduce 在线性时间内找到最小 x 的对象:

const array = [{x:500, y:400}, {x:80, y:400}, {x:900, y:400}];
const minX = array.reduce((acc, curr) => curr.x < acc.x ? curr : acc, array[0] || undefined);
console.log(minX)

排序并获得第一个

var arr = [{
  x: 500,
  y: 400
}, {
  x: 80,
  y: 400
}, {
  x: 900,
  y: 400
}];
arr.sort((a, b) => a.x < b.x ? -1 : (a.x > b.x ? 1 : 0));
console.log(arr[0]);