【发布时间】:2018-01-21 22:21:03
【问题描述】:
我正在尝试删除给定参数中的公共元素,并且 创建具有唯一元素的最终数组。 在下面的示例中,我的最终数组给了我 [1,3,4,5] 而不是 [1,4,5]。 我进行了调试,元素 (3) 之一没有通过循环。 在元素 (2) 之后,它跳到元素 (4)。我很困惑为什么会这样?我的代码有什么问题吗?任何帮助表示赞赏。 谢谢
function arrayBreaker(arr) {
let test = [];
test.push(arguments[1]);
test.push(arguments[2]);
let target = arguments[0];
target.filter(val => {
if (test.indexOf(val) > -1) {
target.splice(target.indexOf(val), 1);
}
});
return target;
}
console.log(arrayBreaker([1,2,3,4,5], 2, 3));
【问题讨论】:
-
在
filter中,您需要返回一个真值或假值,而不是改变数组。 -
正如 Xufox 所说,您不能使用
filter进行变异,您想使用.forEach进行此类操作。 -
@imixtron:他是这么说的吗?
-
@imixtron 谢谢你的信息。我仍然无法使用 forEach 获得正确的输出。我刚刚用 forEach 替换了过滤器。我做错了吗?
-
@Aditya:
.forEach()不会有什么不同。第一条评论的意思是你在.filter回调中返回条件的结果,并分配(或返回)结果数组。但是你真的需要改变原始数组吗?
标签: javascript arrays arguments