我需要从属性b
的最高值的对象中获取属性a
的值。
var myArr = [
{
a: 1,
b: 15
},
{
a: 2,
b: 30
}
];
我尝试了以下操作,但它只返回a
的最高值,而不是b
。
var res = Math.max.apply(Math,myArr.map(function(o){return o.a;});
var blah = getByValue(myArr);
答案 0 :(得分:8)
使用Array#reduce,并在每次迭代时获取具有最高a
值的对象:
var myArr = [{"a":1,"b":15},{"a":2,"b":30}];
var result = myArr.reduce(function(o, o1) {
return o.a > o1.a ? o : o1;
}).b;
console.log(result);
答案 1 :(得分:1)
可以根据排序方向对副本进行排序,然后获取第一个或最后一个:
var myArr = [
{
a: 1,
b: 15
},
{
a: 2,
b: 30
}
];
var highest = myArr.slice().sort((a,b)=>a.a-b.a).pop().b
console.log(highest)
答案 2 :(得分:0)
您可以使用.reduce()
查找具有最大a
值的元素,然后抓住其b
值,如下所示:
var myArr = [{
a: 1,
b: 15
},
{
a: 2,
b: 30
}
];
var max = myArr.reduce(function(sum, value) {
return (sum.a > value.a) ? sum : value;
}, myArr[0]);
console.log(max.b);
更为非正统的方法是使用.sort()
按照其属性a
按降序对数组进行排序,然后获取第一个元素的b
值,如下所示:< / p>
var myArr = [{
a: 1,
b: 15
},
{
a: 2,
b: 30
}
];
var max = myArr.sort(function(value1, value2) {
return value1.a < value2.a;
})[0];
console.log(max.b);
答案 3 :(得分:0)
试试这个:
var myArr = [
{
a: 1,
b: 15
},
{
a: 2,
b: 30
}
];
var res = myArr.map(function(o){return o.b;});
myArr.sort(function (o1, o2) {
return o1.a < o2.a;
})
console.log(myArr[0].b);