如何获取对象数组中最大值的索引?

时间:2015-07-29 08:08:13

标签: javascript jquery arrays angularjs

我有一个格式如下的数组:

var dataset = [{
    date: '1',
    value: '55'
}, {
    date: '2',
    value: '52'
}, {
    date: '3',
    value: '47'
}];

我通过以下方式获得最大值:

var maxValue = Math.max.apply(Math, dataset.map(function(o) {
    return o.value;
}));

效果很好,没有什么可担心的。但是我如何获得maxValue的索引?

我尝试过indexOf()(它一直返回-1),jQuery inArray()以及reduce(),但它们都没有正常工作。

我认为通过迭代所有元素来获得索引会有更清晰的方法。

提前致谢。

2 个答案:

答案 0 :(得分:2)

您可以使用Array.mp()创建的临时数组来查找类似

的索引



var dataset = [{
  date: '1',
  value: '55'
}, {
  date: '2',
  value: '59'
}, {
  date: '3',
  value: '47'
}];

var tmp = dataset.map(function(o) {
  return o.value;
});
var maxValue = Math.max.apply(Math, tmp);
//find the index using the tmp array, need to convert maxValue to a string since value is of type string
var index = tmp.indexOf(maxValue + '');

snippet.log(maxValue + ' : ' + index)

<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
&#13;
&#13;
&#13;

答案 1 :(得分:2)

作为Array.forEach

的替代方案

&#13;
&#13;
./catalina.sh jpda start
&#13;
&#13;
&#13;