我正在处理一系列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”的任何对象。像往常一样,谢谢快速的答案。几个答案是很好的解决方案,并且可以使用(例如使用“拼接”),但这个解决方案似乎是最简单的最简单。再次感谢。
答案 0 :(得分:34)
n
是你的列表项,所以这样的事情应该完成这项工作:
$.grep(issuesArray, function(n) { return n.ID != "2"; })
答案 1 :(得分:6)
不确定我是否理解你的问题,但我会这样做:
$.each(IssuesArray, function(i, item){
if (item.ID == IDToBeRemoved) IssuesArray.splice(i, 1);
});
答案 2 :(得分:2)
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));
答案 3 :(得分:0)
不使用jQuery或其他框架:
var newArray = [];
var i=0, len=IssuesArray.length;
var bad_id = "2"; // or whatever
while(i<len) {
if(IssuesArray[i].ID !== bad_id) {
newArray.push(IssuesArray[i++]);
}
}
答案 4 :(得分:0)
简化??
var IssuesArray = {
1: "Issue1",
2: "Issue2",
3: "Issue3"
};
var issue2 = IssuesArray[2];
为什么单个哈希会产生哈希列表?