Arrays JSON数组,如何获取给定属性值较高的对象索引?

Arrays JSON数组,如何获取给定属性值较高的对象索引?,arrays,json,angularjs,sorting,Arrays,Json,Angularjs,Sorting,我有以下对象的JSON数组: var dummyData = [ { hr:"10", dial_success_rate:"23", appt_success_rate:"60", appt_100_numbers:"10", }, { hr:"11", dial_success_rate:"24

我有以下对象的JSON数组:

    var dummyData = [
        {
            hr:"10",
            dial_success_rate:"23",
            appt_success_rate:"60",
            appt_100_numbers:"10",
        },
        {
            hr:"11",
            dial_success_rate:"24",
            appt_success_rate:"60",
            appt_100_numbers:"10",
        },
        {
            hr:"12",
            dial_success_rate:"25",
            appt_success_rate:"60",
            appt_100_numbers:"10",
        },
        {
            hr:"13",
            dial_success_rate:"26",
            appt_success_rate:"60",
            appt_100_numbers:"10",
        },
        {
            hr:"14",
            dial_success_rate:"27",
            appt_success_rate:"60",
            appt_100_numbers:"10",
        },
        {
            hr:"15",
            dial_success_rate:"28",
            appt_success_rate:"60",
            appt_100_numbers:"10",
        },
        {
            hr:"16",
            dial_success_rate:"29",
            appt_success_rate:"60",
            appt_100_numbers:"10",
        },
        {
            hr:"17",
            dial_success_rate:"30",
            appt_success_rate:"60",
            appt_100_numbers:"10",
        },
        {
            hr:"18",
            dial_success_rate:"45",
            appt_success_rate:"60",
            appt_100_numbers:"10",
        },
        {
            hr:"19",
            dial_success_rate:"40",
            appt_success_rate:"60",
            appt_100_numbers:"10",
        },
        {
            hr:"20",
            dial_success_rate:"39",
            appt_success_rate:"60",
            appt_100_numbers:"10",
        },
        {
            hr:"21",
            dial_success_rate:"55",
            appt_success_rate:"60",
            appt_100_numbers:"10",
        },
        {
            hr:"22",
            dial_success_rate:"12",
            appt_success_rate:"60",
            appt_100_numbers:"10",
        },
        {
            hr:"23",
            dial_success_rate:"9",
            appt_success_rate:"60",
            appt_100_numbers:"10",
        },
    ];
我想获得给定属性上具有最高值的对象的索引

意思是这样的:

 $scope.getHigherItem = function(data, stat, info) {
        var selectedValues = data.map(function(x) {
            return parseFloat(x[stat]);
        });

        var i = selectedValues.indexOf(Math.max.apply(Math, selectedValues));

        var result = {};
        info.forEach(function(x) {
            result[x] = data[i][x];
        });
        return result;
    };




 console.log($scope.getHigherItem(dummyData, "dial_success_rate", ["dial_success_rate"]));
上面的示例返回更高的值,但不返回数组中对象的索引

我怎样才能解决它呢

非常感谢您的建议。

var maxValue=Math.max(selectedValues);
var maxValue = Math.max(selectedValues);
var maxIndexes = []; //Array of indexes of == maxValue

for (_i = 0, _len = selectedValues.length; _i < _len; _i++) {
  a = selectedValues[i];
  if (a === max) {
    maxIndexes.push(_i);
  }
}

...
...
return {
  result: result
  maxIndexes: maxIndexes

}
var maxIndexes=[]//==maxValue的索引数组 对于(_i=0,_len=selectedValues.length;_i<_len;_i++){ a=所选值[i]; 如果(a==最大值){ maxIndexes.push(_i); } } ... ... 返回{ 结果:结果 maxIndexes:maxIndexes }

这样,您就有了一个数组,其中包含selectedValues数组中所有对象的索引,这些索引等于max。如果您想要第一个,只需执行
maxIndexes[0]

我认为您需要做的就是向结果中添加一个包含索引的属性,如下所示:

...
var result = {};
/*
info.forEach(function(x) {
    result[x] = data[i][x];
});*/

result[stat] = data[i][stat]; // <-- INSTEAD OF FOREACH LOOP
result.index = i; // <-- HERE
return result;
。。。
var result={};
/*
信息forEach(函数(x){
结果[x]=数据[i][x];
});*/

结果[stat]=数据[i][stat];// 在映射功能中一次执行所有操作:

    var getHigherItem = function (data, stat) {
        var compare, result = {};

        var selectedValues = data.map(function (x, i) {                
            if (i == 0) {
                compare = parseFloat(x[stat]);
            } else if(compare < parseFloat(x[stat])){
                compare = parseFloat(x[stat]);
                result[stat] = parseFloat(x[stat]);
                result['index'] = i;
            }
        });
        return result;
    };

    console.log(getHigherItem(dummyData, "dial_success_rate"));
var getHigherItem=函数(数据,统计){
变量比较,结果={};
var selectedValues=data.map(函数(x,i){
如果(i==0){
比较=parseFloat(x[stat]);
}else if(比较
您想找到
所选值的最大值的索引吗?
是的,我想找到给定属性上具有最高值的对象的索引。另外,您不需要foreach循环eitherA一行maxIndeces
var maxIndeces=selectedValues.reduce(函数(a,b,idx,array){if(array[idx]==maxValue){a.push(数组[idx]);};返回一个;},[])
@klode使用reduce很好