使用Javascript从多维数组中获取最大值

Get max value from multidimensional array using Javascript

本文关键字:获取 最大值 数组 Javascript 使用      更新时间:2023-09-26

我需要排序的最大整数值包含数组从多维数组到第一个使用Javascript/node。

  [{"data1":8,"data2":10,"data3":20.25,"data4":0},
{"data1":12,"data2":60,"data3":14.01,"data4":0},
{"data1":30,"data2":32.19,"data3":22.51,"data4":0}]

需要输出:

[{data2":"data1":12日,60岁的"data3":14.01,"data4":0},{"data1":30,"data2":32.19,"data3":22.51,"data4":0},{"data2":"data1":8日,10日,"data3":20.25,"data4":0}]

由于第一个数组的最大值为60,第二个数组的最大值为332.19,第三个数组的最大值为20.25。

给你

var data= [
  {"data1":8,"data2":10,"data3":20.25,"data4":0},
  {"data1":12,"data2":60,"data3":14.01,"data4":0},
  {"data1":30,"data2":32.19,"data3":22.51,"data4":0}
];
data.sort(function(a,b){
  return Math.max(b.data1,b.data2,b.data3,b.data4)-Math.max(a.data1,a.data2,a.data3,a.data4);
});
console.log(data);

顺便说一下,问题中的输出是错误的。应该如下所示:

[ { data1: 12, data2: 60, data3: 14.01, data4: 0 },
  { data1: 30, data2: 32.19, data3: 22.51, data4: 0 },
  { data1: 8, data2: 10, data3: 20.25, data4: 0 } ]

对大型数据集使用map排序而不重复调用Math.max的建议

// the array to be sorted
var data = [{ "data1": 8, "data2": 10, "data3": 20.25, "data4": 0 }, { "data1": 12, "data2": 60, "data3": 14.01, "data4": 0 }, { "data1": 30, "data2": 32.19, "data3": 22.51, "data4": 0 }];
// temporary array holds objects with position and sort-value
var mapped = data.map(function (el, i) {
        return {
            index: i, 
            value: Math.max.apply(null, Object.keys(el).map(function (k) {
                return el[k];
            }))
        };
    });
// sorting the mapped array containing the reduced values
mapped.sort(function (a, b) {
    return b.value - a.value;
});
// container for the resulting order
var result = mapped.map(function (el) {
    return data[el.index];
});
console.log(result);
console.log(mapped);
.as-console-wrapper { max-height: 100% !important; top: 0; }