【发布时间】:2017-04-24 04:00:03
【问题描述】:
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])
我不太了解地图。我在每个数组函数中写了一个最大数,我想实现它来映射。我知道我没有用 return max(arrays) 返回正确的东西,但我也尝试过 return max(arrays[x]) 来强调我想遍历数组的整个参数。 return max(arrays) ==> [3,3,3],返回一个数组中的最大数 3 次,我也不明白为什么。
【问题讨论】:
-
嗯,为什么不直接
var arrs = [[1,2,3],[5,6,7]], maxes = arrs.map(a => Math.max(...a)); console.log(maxes);? -
因为这是类,我必须分解所有内容并确保我理解它的抽象,然后才能在将来简写它:)
-
以上代码不是简写。在 2016 年,这是您应该在 JS 类中为这项工作考虑的抽象。但好吧,我明白你的意思了。
标签: javascript arrays dictionary functional-programming higher-order-functions