如何从json数组中获取特定值?

时间:2012-09-11 11:59:35

标签: javascript json getjson

我有json数组名称,如newarr。如何从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"
        }
    ]);

5 个答案:

答案 0 :(得分: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];

答案 1 :(得分:1)

我用jQuery尝试了这个,这里是fiddle

$.each(newarr[0], function(k, v) {
    arr.push(v.id);
});
console.log(arr);

答案 2 :(得分:0)

这很简单:

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

请允许我建议您不要直接向Stack Overflow寻求帮助,而是下次谷歌。 :)此外,这不是一个JSON数组:它是一个Javascript数组。最好使用[]表示法(var arr = [])初始化数组。

答案 3 :(得分: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); }

在你的情况下:

{{1}}

此外:这不是'JSON数组'。 There are no such things as JSON Objects/Arrays

答案 4 :(得分: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 null:

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

的链接