使用带有JavaScript对象数组的jQuery inArray

我正在使用一系列JavaScript对象:

var IssuesArray = [{"ID" : "1", "Name" : "Issue1"}, {"ID" : "2", "Name" : "Issue2"}, {"ID" : "3", "Name" : "Issue3"}]; 

当我知道对象的ID时,我的最终努力是尝试从数组中删除对象。 我正在尝试使用类似这样的代码:

 $.grep(IssuesArray, function(n, i) { return i != $.inArray("2", IssuesArray); }); 

所以这表明我正在尝试使用jQuery grep通过索引(i)删除一个元素,我试图通过使用jQuery inArray来检索它。 当然上面的代码不起作用,因为“2”应该对应于数组中的项,它们都是JavaScript对象(对象永远不会等于“2”)。 我需要这样的东西:

 $.inArray(javascriptObject.Name=="2", IssuesArray); 

有没有人使用inArray来获取JavaScript对象的索引,使用该对象中的字段值? 任何帮助,将不胜感激。 谢谢。

更新/澄清:有几个人对我的问题感到困惑,但我收到了一个有效的答案。 我正在使用:

 IssuesArray = $.grep(IssuesArray, function(n) { return n.ID != "2"; }); 

当解决方案非常简单时,我想我的想法太深了。 我只是想从数组中删除一个JavaScript对象,只要我知道该对象中特定属性的值即可。 上面的解决方案使用jQuery的grep来返回数组中的所有内容,除了ID ==“2”的任何对象。 像往常一样,谢谢快速的答案。 几个答案是很好的解决方案,并且可以使用(例如使用“拼接”),但这个解决方案似乎是最简单的最简单。 再次感谢。

n是你的列表项,所以这样的事情应该做的工作:

 $.grep(issuesArray, function(n) { return n.ID != "2"; }) 

不确定我是否理解你的问题,但我会这样做:

 $.each(IssuesArray, function(i, item){ if (item.ID == IDToBeRemoved) IssuesArray.splice(i, 1); }); 
 var spliceID = function(id, arr) { $(arr).each(function(i, el) { if (el.ID == id) { arr.splice(i,1); return false; } }); return arr; } console.log(spliceID('2', IssuesArray)); 

不使用jQuery或其他框架:

 var newArray = []; var i=0, len=IssuesArray.length; var bad_id = "2"; // or whatever while(i 

简化??

 var IssuesArray = { 1: "Issue1", 2: "Issue2", 3: "Issue3" }; var issue2 = IssuesArray[2]; 

为什么单个哈希值时会出现哈希列表?