如何从数组中的对象获取最低整数?

时间:2019-05-22 23:16:25

标签: javascript arrays

基本上,我要实现的是来自与其他对象组成数组的对象中的最小整数。

r.Collection

是一个可容纳3个对象的数组,因此看起来像这样:

[{foo:"bar",abc:"xyz",number:1},{foo:"car",abc:"hcu",number:2},{foo:"tar",abc:"uif",number:3}]

现在的目标是对这个数组进行排序。找到最低值后,再查看每个数字值。我需要它将整个对象从数组中拉出,以便以后使用。

当前我要执行的操作不起作用,我不确定。我可能做的完全错了

 for (o in r.Collection) {
                    var data = r.Collection[o]
                    console.log(Math.min(data.number))
                }

我知道使用Math.min查找数组中的最小数字,但是当我运行此代码时,每个对象都会被打印出来。

如何对数组进行排序,以将数值最小的对象拉出来?

3 个答案:

答案 0 :(得分:4)

Math.min有点简单-无法在具有多个值的对象中指定min的含义。

您可以使用reduce()遍历列表中的项目并跟踪当前的最低项目。根据传递给reduce的函数,结果将是列表中最低的:

let l = [{foo:"bar",abc:"xyz",number:1},{foo:"car",abc:"hcu",number:2},{foo:"tar",abc:"uif",number:3}]

let lowest = l.reduce((lowest, item) => item.number < lowest.number ? item: lowest)
console.log(lowest)

答案 1 :(得分:1)

Math.min()可以工作,但是这需要您使用解构和数组索引的某种按摩来解决0基数的问题。

var r = {};
r.collection = [{foo:"bar",abc:"xyz",number:1},{foo:"car",abc:"hcu",number:2},{foo:"tar",abc:"uif",number:3}];
var min = r.collection[Math.min(...(r.collection.map(function(item){return item.number})))-1];

console.log(min);

答案 2 :(得分:0)

您还可以通过Array.sort对数组进行排序,然后从中选择第一项:

let data = [{foo:"car",abc:"hcu",number:2},{foo:"bar",abc:"xyz",number:1},{foo:"tar",abc:"uif",number:3}]

let result = data.sort((a,b) => a.number - b.number)[0]

console.log(result)

如果您需要max,只需将b.number - a.number等的排序反向即可。