使用jQuery inArray和JavaScript对象数组

vom3gejh  于 2023-06-29  发布在  jQuery
关注(0)|答案(4)|浏览(133)

我正在处理一个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通过index(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”的对象。像往常一样,感谢您的快速回答。有几个答案是很好的解决方案,并且可以使用(例如使用“splice”),但这个解决方案似乎是最短最直接的。

ioekq8ef

ioekq8ef1#

n是你的列表项,所以像这样的东西应该可以完成这项工作:

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

bmvo0sr52#

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

$.each(IssuesArray, function(i, item){
  if (item.ID == IDToBeRemoved) IssuesArray.splice(i, 1);
});
vyswwuz2

vyswwuz23#

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));
ohfgkhjo

ohfgkhjo4#

不使用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++]);
  }
}

相关问题