基本上,我想要实现的,是一个对象的最小整数,它与其他对象在一个数组中。
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来查找数组中的最小数字,但是当我运行这段代码时,每个对象都会打印出来。
如何对此数组进行排序,以拉出数值最小的对象?
发布于 2019-05-22 23:21:47
对于这一点,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)
发布于 2019-05-22 23:31:46
Math.min()
可以工作,但它需要您使用解构和一些数组索引的消息来说明0-base。
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);
发布于 2019-05-23 04:14:00
您还可以简单地通过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
等颠倒排序即可。
https://stackoverflow.com/questions/56266152
复制相似问题