【发布时间】:2019-07-17 00:27:31
【问题描述】:
我想编写将 doNotInclude 方法添加到 Array.prototype 对象的代码。
我的代码的目的是:不包括从数组中传递给doNotInclude 的索引值。
代码如下:
Array.prototype.doNotInclude = function (arr) {
//if (!Array.isArray(arr)) arr = [arr];
return this.filter((val, i) => {
if (!arr.includes(i)) return val;
});
};
['zero', 'one', 'two', 'three', 'four', 'five', 'six'].doNotInclude([0, 1])
我的代码执行成功并返回:
[ 'two', 'three', 'four', 'five', 'six' ]
我的问题是下面这行代码在做什么?
//if (!Array.isArray(arr)) arr = [arr];
在我的示例中,将其注释掉似乎不会影响输出,所以我很好奇在什么情况下我需要那行代码?
【问题讨论】:
-
对于像
doNotInclude(1)这样的单个索引参数 -
那个过滤器不对...应该返回布尔值
-
一个小技巧——
filter()的回调应该返回一个布尔值。所以你可以只返回包含的结果:return this.filter((val, i) => !arr.includes(i));现在它也过滤掉了0和其他任何虚假的内容,无论索引如何。
标签: javascript arrays function object prototype