函数循环一次,然后返回

时间:2016-05-02 17:12:31

标签: javascript arrays loops for-loop typescript

我有这样的功能:

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 个答案:

答案 0 :(得分:0)

如果您只想删除重复项,可以使用如下缩减器:

var arr = [1, 2, 3, 4, 5, 5, 4, 3, 2, 1];

var newArr = arr.reduce(function(acc, val) {
  if(acc.indexOf(val) === -1) {
    acc.push(val);
  }
  return acc;
}, []);

console.log(newArr);

newArr数组仅包含非重复值。