【问题标题】:How do I remove an item from an array by value but keep the original index order? [duplicate]如何按值从数组中删除项目但保留原始索引顺序? [复制]
【发布时间】:2017-10-04 14:11:38
【问题描述】:

如何按值从数组中删除一个项目,但仍保持索引顺序而不是数组重新索引项目? 更清楚地说,以下代码将按值删除项目,但它也会重新索引值,这意味着在我们拼接 5 后 15 的索引将是 0 而不是 1。

var arr = [5, 15, 110, 210, 550];
var index = arr.indexOf(5);

if (index > -1) {
   arr.splice(index, 1);
}

【问题讨论】:

标签: javascript arrays indexing


【解决方案1】:

如果要保留索引而不是切片,请将索引值设置为未定义...

var arr = [5, 15, 110, 210, 550];
var index = arr.indexOf(5);

if (index > -1) {
   arr[index] = undefined;
}
console.log(arr);

arr.forEach(function(item){
  if(item !== undefined){
    console.log(item);
  }
});

你总是可以迭代,有条件地过滤未定义的值..

【讨论】:

  • 这样做的缺点是每次循环时都必须检查 item 是否未定义。如果你删除 arr[index];然后 forEach 和 for-in 将为您跳过该索引。
猜你喜欢
  • 1970-01-01
  • 2011-04-26
  • 2012-09-13
  • 2019-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多