这里我是一种算法,该算法可以在每个子数组中找到最大值,然后将其推到单独的数组中(最终)。
我想让变量“值”等于可能的最小数字,以便任何负数都可以被认为高于“值”
function largestOfFour(arr) {
var final=[];
arr.map(sub => {
let value = 0; //issue
sub.map(num => {
if(num>value){value=num};
})
final.push(value)
})
return final;
}
console.log(largestOfFour([[17, 23, 25, 12], [25, 7, 34, 48], [4, -10, 18, 21], [-72, -3, -17, -10]]));
在此示例中,最后一个子数组返回0,因为该子数组中的所有数字都不高于“ value”的初始值0。
我希望它返回'-3',因为它是子数组中的最高数字。
答案 0 :(得分:3)
您似乎只是在寻找每个数组的最大值。
使用Array#map和Math#max和spread syntax,您可以执行以下操作。
const data = [[17, 23, 25, 12], [25, 7, 34, 48], [4, -10, 18, 21], [-72, -3, -17, -10]];
const res = data.map(arr=>Math.max(...arr));
console.log(res);
答案 1 :(得分:3)
您可以仅将value
设置为Number.NEGATIVE_INFINITY
,但出于其价值,我建议您在内部函数中仅使用reduce
而不是map
。这样,内部循环将从sub[0]
开始作为初始值,而不是依赖于任何占位符。
function largestOfFour(arr) {
var final = arr.map(sub => sub.reduce((num, value) => Math.max(num, value)));
return final;
}
console.log(largestOfFour([
[17, 23, 25, 12],
[25, 7, 34, 48],
[4, -10, 18, 21],
[-72, -3, -17, -10]
]));