function each(coll, f) {
if (Array.isArray(coll)) {
for (var i = 0; i < coll.length; i++) {
f(coll[i], i);
}
} else {
for (var key in coll) {
f(coll[key], key);
}
}
}
function map(array, f) {
var acc = [];
each(array, function(element, i) {
acc.push(f(element, i));
});
return acc;
}
function max(numbers) {
var maximum = numbers[0];
each(numbers,function(x){
if(x>maximum){
maximum = x;}
});
return maximum;
}
function maximums(arrays){
return map(arrays, function(x){
return max(arrays);
})
}
maximums([1,2,3],[5,6,7])
我不太懂 map 。我在数组函数中写了一个最大数量,我想将其实现为映射。我知道我没有用 return max(arrays) 返回正确的东西,但我也尝试过 return max(arrays[x]) 来强调我想迭代数组的整个参数。 return max(arrays) ==> [3,3,3],返回一个数组中最大的数字 3 次,我也不明白为什么。
最佳答案
您需要从x
获取最大值
function maximums(arrays) {
return map(arrays, function (x) {
return max(x);
// ^
});
}
并使用数组数组调用函数
maximums([[1, 2, 3], [5, 6, 7]]);
// ^ ^
function each(coll, f) {
if (Array.isArray(coll)) {
for (var i = 0; i < coll.length; i++) {
f(coll[i], i);
}
} else {
for (var key in coll) {
f(coll[key], key);
}
}
}
function map(array, f) {
var acc = [];
each(array, function (element, i) {
acc.push(f(element, i));
});
return acc;
}
function max(numbers) {
var maximum = numbers[0];
each(numbers, function (x) {
if (x > maximum) {
maximum = x;
}
});
return maximum;
}
function maximums(arrays) {
return map(arrays, function (x) {
return max(x);
})
}
console.log(maximums([[1, 2, 3], [5, 6, 7]]));
关于javascript - 使用map返回每个数组中的最大数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41047450/