如何从JavaScript对象数组中删除特定元素?

时间:2013-08-23 15:52:24

标签: javascript json

我从php文件接收JSON输出, 有很多像这样的对象:

[
  { "home_content" : "Nam feugiat sem diam, ut fermentum orci hendrerit sit amet.",
    "home_id" : 2,
    "home_img" : "tech.png",
    "home_title" : "Latest Technologies Development"
  },
  { "home_content" : "לורם לורם",
    "home_id" : 239,
    "home_img" : "http://placehold.it/400",
    "home_title" : "שוק פירות וירקות"
  },
  { "home_content" : "New Item Content",
    "home_id" : 259,
    "home_img" : "http://www.placehold.it/100",
    "home_title" : "New Home Item"
  }
]

在我的应用程序中,我想删除某个对象, 有没有办法通过home_id收到它的位置? 或任何能让我区分某个对象与该列表的东西

3 个答案:

答案 0 :(得分:3)

你所拥有的是一系列对象,所以你可以循环遍历数组,直到找到具有所需home_id的数组:

var index;
for (index = 0; index < array.length; ++index) {
    if (array[index].home_id === 2) {
        array.splice(index, 1); // Removes this entry
        break;                  // Exits the loop
    }
}

答案 1 :(得分:1)

你所拥有的是一个数组(从解析JSON获得),所以你必须找到正确的索引并拼接它:

function delObjWithHomeId(arr, id) {
    for(var i=0; i<arr.length; i++) {
        if(arr[i].home_id === id) {
            return arr.splice(i,1);
        }
    }
}

答案 2 :(得分:1)

您发布的内容是一系列对象。这是一个重要的区别 - 虽然在javascript中,而数组是一种对象。

如您所见,对象可以具有与数据元素对应的字母数字属性名称(索引,如果您愿意)。相比之下,数组在数字上被编入索引,从0开始。它很像一个对象,但属性名称都是数字,并且都按顺序排列。

所以,想象你的数据是这样的:

{
0:{ 
home_id: 2
home_title: Latest Technologies Development
home_img: tech.png
home_content: Nam feugiat sem diam, ut fermentum orci hendrerit sit amet.
},
1:{ 
home_id: 239
home_title: שוק פירות וירקות
home_img: http://placehold.it/400
home_content: לורם לורם
},
2:{ 
home_id: 259
home_title: New Home Item
home_img: http://www.placehold.it/100
home_content: New Item Content
}
}

您可以使用多种方法来操作数组,例如push()pop()shift()。要访问特定的一个,您通常会将其循环(除非您已经知道正确的索引)。

循环数组有几种方法,while是众多可能的方法之一:

var i = 0;
while(var oneItem = myArray[i++]){
    if (oneItem.home_id == theItemIdIAmLookingFor) {
        myArray.splice(i, 1);
        break;
    }
}

文档