【问题标题】:splice to remove duplicate array value does not work javascript [duplicate]拼接删除重复的数组值不起作用javascript [重复]
【发布时间】:2017-08-18 06:21:37
【问题描述】:

这是我的代码

var numbers = [14, 14, 16, 25];

for (var i = 0; i < numbers.length; i++){
if (numbers[i] === 14) 
numbers.splice(i,1)
}

我想删除数组中所有的“14”。

此方法只是删除一个重复值并将数组返回为[14,16,25]。但我希望它是 [16,25]

【问题讨论】:

    标签: javascript arrays


    【解决方案1】:

    这是因为您删除了索引 0 处的条目,并将 i 移至 1。但索引 0 处的条目现在也是 14。您已跳过它。

    要么向后工作,要么在删除条目时不增加i(其中任何一个都会修改现有数组);或通过filter 构建一个全新的数组。

    向后退:

    var numbers = [14, 14, 16, 25];
    for (var i = numbers.length - 1; i >= 0; i--) {
      if (numbers[i] === 14) {
        numbers.splice(i,1);
      }
    }
    console.log(numbers);

    删除条目时不会增加i

    var numbers = [14, 14, 16, 25];
    var i = 0;
    while (i < numbers.length) {
      if (numbers[i] === 14) {
        numbers.splice(i,1);
      } else {
        ++i;
      }
    }
    console.log(numbers);

    通过filter创建一个新数组:

    var numbers = [14, 14, 16, 25];
    numbers = numbers.filter(function(value) { return value != 14; });
    console.log(numbers);

    【讨论】:

    • 使用了您的代码及其最简单的解决方案,谢谢 crowder
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-26
    • 1970-01-01
    • 2020-03-18
    • 1970-01-01
    • 1970-01-01
    • 2013-10-01
    • 2020-08-20
    相关资源
    最近更新 更多