javascript - 从每个对象数组中获取最大值

标签 javascript arrays destructuring

所以我有这样的数据:

data = [
         [{a: "b", value: 12}, {a: "bb", value: 39}, {a: "bb", value: 150}],
         [{a: "c", value: 15}, {a: "cc", value: 83}, {a: "ccc", value: 12}],
         [{a: "d", value: 55}, {a: "dd", value: 9}, {a: "dd", value: 1}]
       ]

我想在每个对象数组中获取最大值。所以结果应该是这样的:
maxValues = [150, 83, 55]

现在我的代码是:
let maxValues = []
let tmp;
let highest = Number.NEGATIVE_INFINITY;

data.map((eachArr, index) => {
  for(let i = eachArr.length -1; i >= 0; i--){
    tmp = eachArr[i].value;
    if(tmp > highest) highest = tmp;
  }
  maxValues.push(highest)
})

结果是
maxValues = [150, 150, 150]

我怎样才能做到这一点?

最佳答案

您可以使用 spread syntax并取映射 value 的最大值.

The spread syntax allows an expression to be expanded in places where multiple arguments (for function calls) or multiple elements (for array literals) or multiple variables  (for destructuring assignment) are expected.



var data = [[{ a: "b", value: 12}, {a: "bb", value: 39 }, {a: "bb", value: 150 }], [{ a: "c", value: 15}, {a: "cc", value: 83 }, {a: "ccc", value: 12 }], [{ a: "d", value: 55}, {a: "dd", value: 9 }, {a: "dd", value: 1 }]],
    result = data.map(a => Math.max(...a.map(b => b.value)));

console.log(result);

关于javascript - 从每个对象数组中获取最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41802114/

相关文章:

javascript - 在 Parse.com(Javascript SDK)中保存时,Geopoint 默认为 0,0

javascript - 如何使用地理定位让它跟随我的确切位置?

javascript - 下一个循环的每个第 n 个具有剩余偏移量的图像

javascript - 使用javascript单击图像时如何播放数组中的每个视频?

JavaScript 解构并分配给新对象

javascript - 解构分配中的 Prop 可以就地转换吗?

javascript - 两个 JavaScript 计时器 vs 一个计时器,为了性能,是否值得放弃一个?

javascript - 使用选择的项目创建新对象

python - Numpy 屏蔽操作

javascript - 从对象(日期对象)解构一个函数