所以我有这样的数据:
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}]
]
Run Code Online (Sandbox Code Playgroud)
我希望在每个对象数组中获得最大值.所以结果应该是这样的:
maxValues = [150, 83, 55]
Run Code Online (Sandbox Code Playgroud)
现在我的代码是:
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)
})
Run Code Online (Sandbox Code Playgroud)
结果是
maxValues = [150, 150, 150]
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
Nin*_*olz 18
您可以使用扩展语法并采用映射的最大值value.
的传播语法允许表达式来在多个参数(对于函数调用)或多个元素(数组文本)或多个变量(解构分配)预计的地方扩大.
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);Run Code Online (Sandbox Code Playgroud)
你必须包含let highest = Number.NEGATIVE_INFINITY;内部forEach函数,因为你必须highest从你的每一组中进行设置array.
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}]
]
let maxValues = []
let tmp;
data.forEach((eachArr, index) => {
let highest = Number.NEGATIVE_INFINITY;
for(let i = eachArr.length -1; i >= 0; i--){
tmp = eachArr[i].value;
if(tmp > highest) highest = tmp;
}
maxValues.push(highest)
})
console.log(maxValues);Run Code Online (Sandbox Code Playgroud)