【发布时间】:2016-08-27 12:58:23
【问题描述】:
我有这样的功能:
removeDuplicates(item: String, allForToday: Array) {
let temp = allForToday;
for (let i = 0; i < temp.length; i++) {
if (temp[i].indexOf(item) > -1) {
temp = temp.splice(i, 1);
}
}
return temp;
}
我这样称呼:
for (let i = 0; i < lastWeekItems.length; i++) {
allForToday = t.removeDuplicates(lastWeekItems[i], allForToday);
}
传递的lastweekItems[i] 是一个字符串,allForToday 是一个字符串数组,如下所示:1;2;3。 lastweekItems[i] 然后可以是例如 2 我期望的是要检查每个项目的整个数组,如果找到该项目,则从数组中删除它所在的条目,但是我看到的是只检查了 temp[0],然后将数组的整个剩余部分拼接起来,并返回空(temp.length 从 14 变为 1)...
【问题讨论】:
-
1;2;3这不是一个数组。 -
您是否有理由尝试拼接您正在使用的数组,而不是使用
filter或其他东西? -
最终结果需要是一个返回的数组,没有重复,我不知道如何使用过滤器
-
仅供参考,
splice更改了它正在操作的数组的内容。所以使用返回值是没有意义的。此外,数组是引用。所以temp === allForToday。对temp的修改也将更改allForToday。 -
哦,就是这样,谢谢@MikeC,现在它几乎可以工作了,在我意识到它返回了它删除的元素之后。
标签: javascript arrays loops for-loop typescript