1

我正在接收来自 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?或任何能让我将某个对象与该列表区分开来的东西

4

3 回答 3

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
    }
}
于 2013-08-23T15:55:23.263 回答
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);
        }
    }
}
于 2013-08-23T15:55:38.550 回答
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()。要访问特定的,您通常会循环它(除非您已经知道正确的index)。

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

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

文档

于 2013-08-23T16:01:50.793 回答