我知道每个和映射都有 native 函数(我认为),但我们正在学习幕后发生的事情。所以检查一下..
var sampleInput = [
[1, 3, 2],
[4, 23, 100],
[7, 6, 3, -2]
];
function eachNew(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 = [];
eachNew(array, function(element, i) {
acc.push(f(element, i));
});
return acc;
}
function max(array) {
var largest = 0;
eachNew(array, function(m){
if (largest < m) {
largest = m};
});
return largest;
}
所以我想写一个函数maximums
,它输出一个数组,每个数组中都有最大数所以[3, 100, 7]
我不知道怎么写。这是我的猜测..
function maximum(array) {
var array = [];{
return map(array, max(array))
};
return array.push(max);
}
这看起来不是一个很好的猜测,但我一直在尝试! 请帮忙,谢谢 :)
最佳答案
你实际上就在那里,只是让它有点复杂。请记住,根据您的规范, map 将 function
作为第二个参数。此函数将应用于作为第一个参数传递的数组。所以你只需要使用你开发的两种成分。因此,maximum
变得相当简单:
function maximum(array) {
return map(array, max);
}
var numbers = maximum(sampleInput);
console.log(numbers);
您似乎是在为学校做这件事,所以在评论中,我希望您能告诉我们为什么上述方法有效。而且,您尝试将 max(array)
作为第二个参数传递给 map 有什么问题。 ;)
关于javascript - 不理解使用 each 和 map 的循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39902773/