【问题标题】:Removing specific items from a javascript array based on index values根据索引值从 javascript 数组中删除特定项目
【发布时间】:2021-08-03 03:28:53
【问题描述】:

假设我有一个像这样的简单 javascript 数组:

var test_array  = ["18081163__,0,0.15,15238", "34035", "Somerset", "Local", "31221", "29640", "42575", "749", "1957", "45809", "17597", "43903", "1841", "1", "Norfolk Road", "Other"]

它的长度 = 16。我想根据索引删除所有项目,除了 [0, 2, 3, 14]。我知道我可以像这样使用 splice 一块一块地做:

test_array.splice(1,1);
test_array.splice(3, 10);
test_array.splice(4, 1);

如何在一行代码中删除索引为 [1, 4,5,6,7,8,9,10,11,12,13,15] 的项目?

【问题讨论】:

  • 是否要保留对test_array 的对象引用?你有什么索引数组?要保留的还是要删除的
  • 我想删除索引 [1, 4,5,6,7,8,9,10,11,12,13,15]。不要真正关心保留原始 test_array。

标签: javascript arrays indexing slice


【解决方案1】:

假设您有一个要删除项目的索引数组,那么您可以尝试使用Array.prototype.filter()

filter() 方法创建一个新数组,其中包含通过所提供函数实现的测试的所有元素。

Array.prototype.includes()

includes() 方法确定数组是否在其条目中包含某个值,根据需要返回 true 或 false。

演示:

var test_array  = ["18081163__,0,0.15,15238", "34035", "Somerset", "Local", "31221", "29640", "42575", "749", "1957", "45809", "17597", "43903", "1841", "1", "Norfolk Road", "Other"];
var index = [1,4,5,6,7,8,9,10,11,12,13,15];
test_array = test_array.filter((item, idx) => !index.includes(idx)); //remove the items whose index does not include the index array

console.log(test_array);

【讨论】:

  • 使用 .filter 的绝佳解决方案!短而甜;这正是我想要的。
  • @gwydion93,很高兴它有帮助:)
猜你喜欢
  • 2021-06-18
  • 2020-06-25
  • 2021-04-20
  • 2019-09-17
  • 2019-09-15
  • 2015-07-19
  • 1970-01-01
  • 2020-11-06
  • 1970-01-01
相关资源
最近更新 更多