2016-06-10 151 views
0

我在阵列的一些对象:从数组中删除一个对象,并返回结果

var names = [ 
    { id:"101", name:"eric" }, 
    { id:"202", name:"john" }, 
    { id:"303", name:"zack" }, 
    { id:"404", name:"ron" } 
]; 

我想删除的对象之一。我只有一块数据来检查对象数组,这是id = 202。最后,我想回到调整的阵列,像这样:

[ 
    { id:"101", name:"eric" }, 
    { id:"303", name:"zack" }, 
    { id:"404", name:"ron" } 
]; 
+1

这不是JSON。这是一个JavaScript数组文字。 – Pang

+0

http://benalman.com/news/2010/03/theres-no-such-thing-as-a-json/ –

回答

1

随着使用filter

var res = names.filter(function(obj) { 
    return obj.id !== "202"; 
}); 

console.log(res); 
+0

谢谢,结果就是我想要的。 –

0

嗨u可以使用下划线JS很简单

var names = [ 
    { id:"101", name:"eric" }, 
    { id:"202", name:"john" }, 
    { id:"303", name:"zack" }, 
    { id:"404", name:"ron" } 
]; 

console.log(_.reject(names, function(num){ return num.id == "202"; })) 

包括图书馆强调

+1

没有必要使用库! – Sun

+0

Underscore是一个JavaScript库,它在不扩展任何内置对象的情况下提供了一大堆有用的函数式编程助手,Underscore提供了超过100个函数。在将来如果他想更好地使用这个写多个操作,那么我的建议 –

+1

首先学习和理解纯JavaScript是更好的。然后,如果它是有用的,可以查看有用的库以了解特殊情况。 – Sun

4

在JavaScript中,您可以使用Array.filter或Array.reject返回所需的对象数组。下面我已经演示了如何使用过滤器来实现这一点。

names.filter(function(eachObject){ return eachObject.id !== '202';}) 

Array.filter是一个本地函数,它将采用现有数组并返回一个具有过滤值的新数组。它通过迭代数组中的每个项目并在每个项目上运行谓词/真值函数来完成此操作。如果一件物品通过了真相测试,它会被推入新的数组中。一旦迭代完成,过滤器将返回一个全新的数组,只有通过测试的值。

在上面的例子中,谓词函数是我们传入过滤器的匿名函数。你也可以传入一个之前已经声明过的函数。

function idNotTwoZeroTwo(eachObject){ return eachObject.id !== '202'}; 
names.filter(idNotTwoZeroTwo) // gives you same result 

另外,在您的示例中,您实际上并不代表正确的JSON。如果你有时间通过​​http://www.w3schools.com/json/default.asp的快速教程刷新。

还有一件事。如果将来你想检查是否有适当的JSON,只需去http://jsonlint.com/并复制你的代码。它会告诉你是否你的代码是正确的JSON。它甚至会告诉你到底发生了什么问题。

这是我的第一个答案,所以很抱歉,如果我没有完全回答你的问题。希望能帮助到你。!

相关问题