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に直接アクセスするのではなく、Googleでサポートを依頼することをお勧めします。:)また、これはJSON配列ではありません。Javascript配列です。また、配列を[]表記(var arr = [])で初期化することをお勧めします。

于 2012-09-11T12:01:52.203 に答える
0

ネストされた配列()を作成しているため、指定された両方の回答は機能しませんnewarr=new 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がない場合は、filternullが必要になる場合があります。

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 に答える