首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JQUERY -从具有键的多维数组中删除数组

JQUERY -从具有键的多维数组中删除数组
EN

Stack Overflow用户
提问于 2019-01-17 20:09:41
回答 2查看 1.1K关注 0票数 0

我正在尝试删除多维数组中的一个数组,如果id与给定的数组相同。

代码语言:javascript
运行
复制
var test_arr = [{"name":"qqq", "city":"it","id":"123456"}, {"name":"ggg", "city":"uk","id":"777456"}];

var result = test_arr.filter(function(v,i) {  
     if (v[0] === '123456'){ test_arr.splice(i,1) } 
}); 

//alert( test_arr[0].id)
alert(result)

http://jsfiddle.net/ofLg0vq5/2/

我怎么能这样做呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-17 20:19:24

您当前解决方案的问题是您没有正确使用.filter.filter期望其传递的函数返回一个boolean。如果返回true,则当前元素将保留在新生成的数组中。如果为false,则省略当前元素。因此,不要尝试使用.splicetest_arr中删除元素,而是使用.filter来决定哪些元素保留,哪些元素删除。

还要注意,在您的示例中,v引用的是test_array中的给定元素(特定对象)。因此,您不需要以对象的索引0为目标,而是需要获取当前对象的id

代码语言:javascript
运行
复制
var test_arr = [{"name":"qqq", "city":"it","id":"123456"}, {"name":"ggg", "city":"uk","id":"777456"}];

test_arr = test_arr.filter(function(elem) {  
  return elem.id !== '123456'; 
}); 

console.log(test_arr); // [{"name": "ggg", "city": "uk", "id": "777456"}]

如果你想要一个“更干净”的解决方案,你可以使用带有destructing assignmentarrow function

代码语言:javascript
运行
复制
test_arr = test_arr.filter(({id}) => id !== '123456'); // [{"name": "ggg", "city": "uk", "id": "777456"}]

代码语言:javascript
运行
复制
var test_arr = [{"name":"qqq", "city":"it","id":"123456"}, {"name":"ggg", "city":"uk","id":"777456"}];

test_arr = test_arr.filter(({id}) => id !== '123456'); // [{"name": "ggg", "city": "uk", "id": "777456"}]
console.log(test_arr);

票数 1
EN

Stack Overflow用户

发布于 2019-01-17 20:26:35

@Nick已经给出了没有.splice的解决方案,但是如果出于任何原因你仍然想使用.splice解决方案,你可以尝试下面的代码。

您正在以错误的方式检查id,在下面的解决方案中,它将删除id - 123456的所有对象

http://jsfiddle.net/u0qshcvf/2/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54235627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档