0

我有像 newarr 这样的 json 数组名称。如何从 json 数组中获取所有 id 以及如何在 arr 值中添加?

 var arr=new Array();
 var newarr=new Array([
        {
            "id": 16820,
            "value": "abcd",
            "info": "Centre"
        },
        {
            "id": 18920,
            "value": "abcd-16820",
            "info": "Centre"
        },
        {
            "id": 1744,
            "value": "abcd-16820",
            "info": "Centre"
        },
        {
            "id": 16822,
            "value": "AaronsburgPA-16820",
            "info": "Centre"
        }
    ]);
4

5 回答 5

2

这应该这样做:

for (var o in newarr){
    arr.push(newarr[o].id);
}

此外,您不需要同时使用方括号,并且new Array在构建数组对象时,另一个可以:

var myarray = new Array(1,2,3);

或者

var myarray = [1,2,3];
于 2012-09-11T12:02:30.610 回答
1

我用 jQuery 试过这个,这是它的小提琴

$.each(newarr[0], function(k, v) {
    arr.push(v.id);
});
console.log(arr);
于 2012-09-11T12:18:35.837 回答
0

这很简单:

for(prop in newArr) {
    arr.push(newArr[prop].id);
}

请允许我建议,与其直接向 Stack Overflow 寻求帮助,不如下次谷歌一下。:) 另外,这不是 JSON 数组:它是 Javascript 数组。最好用[]符号 ( var arr = []) 初始化一个数组。

于 2012-09-11T12:01:52.203 回答
0

两个给出的答案都不起作用,因为您正在创建一个嵌套数组 ( newarr=new Array([...]))。

算法是:遍历包含对象的 Array,并将push每个 object.id 的值设为arr

在你的情况下:

for (var i=0;i<newarr[0].length;i+=1){
  if (newarr[0][i].id) {
    arr.push(newarr[0][i].id);
}

此外:这不是“JSON 数组”。没有 JSON 对象/数组之类的东西

于 2012-09-11T12:09:47.150 回答
0

您可以map在数组上使用该方法:

arr = newarr.map(function(obj) { return obj.id })

以及文档链接:https ://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/map

如果您没有在每个对象中都有一个 id,您可能希望为filter空:

arr = newarr.map(function(obj) {  
  return obj.id  
}).filter(function(id){  
  return id !== undefined  
})

文档:https ://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/filter

如果你真的有一个嵌套数组,请先这样做:

newarr = newarr[0]

这是jsfiddle的链接

于 2012-09-11T12:10:18.053 回答