繁体   English   中英

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

[英]Get max value from multidimensional array using Javascript

我需要使用Javascript /节点对包含多维数组的最大整数值到第一个数组进行排序。

  [{"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}]

需要输出:

[{“ 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}]]

由于第一个数组的最大值为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 } ]

无需重复调用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; } 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM