【发布时间】:2016-12-21 05:49:31
【问题描述】:
我偶然发现了这段代码,旨在重新定义 Array.prototype.reduce:
function first(array, n){
return n === undefined ? array[0] : array.slice(0, n);
};
function last(array, n){
if(n> array.length){
return array;
}else{
return n === undefined ? array[array.legnth -1] : array.slice(array.length - n, array.length);
};
function map(collection, iterator){
var arr = [];
each(collection, function(element, index){
arr.push(iterator(element, index);
});
return arr;
};
function reduce(collection, rf, acc) {
acc = acc === undefined ? first(collection) : acc;
return last(map(collection, function (value) {
acc = rf(acc, value);
return acc;
}));
}
但是,我不明白 array.last() 在这里做什么。有人可以解释一下。谢谢你。
【问题讨论】:
-
数组没有原生的
last函数。除非它也是数组原型的扩展。根据您的代码,没有array.last()调用,我只能看到last函数。最后做的是在那个 javascript 范围本身中实现的。你可以自己找。 -
last定义在哪里 -
您必须向我们展示
first()、last()和map()函数,因为它们不是标准的Javascript。我们可以猜到他们做了什么,但如果我们不必猜测,这里的答案会好得多。此外,您询问了array.last(),但您的代码中没有类似的内容。请花一些时间编写/编辑一个清晰的问题,其中包含所有必要的信息,以了解您的问题以及您的情况。现在,这个问题将被关闭为“不清楚你在问什么”,因为其中没有足够的信息。 -
@jfriend00 感谢您的所有 cmets。我已添加您要求的信息。感谢您查看此内容。
-
在
last(),length在这一行拼写错误:array[array.legnth -1]
标签: javascript arrays object methods