2016-05-14 10 views
1

私は以下のような配列オブジェクトを持っています。このフォーマットをオブジェクトの配列に変換し、キーを削除する方法です。 JavaScriptを使用してフォーマット以下にこれを変換する方法オブジェクトの配列からキーを削除する方法

{ 
    "9417702107": { 
    "name": "Sunny", 
    "phone": "9417702107", 
    "exists": true 
    }, 
    "8826565107": { 
    "name": "Gurwinder", 
    "phone": "8826565107", 
    "exists": true 
    } 
} 

[{ 
    "name": "Sunny", 
    "phone": "9417702107", 
    "exists": true 
}, { 
    "name": "Gurwinder", 
    "phone": "8826565107", 
    "exists": true 
}] 

答えて

3

使用に並べ替えることができますにorderと呼ばれる新しい属性を置きます単純ループ:

array = []; 
for (var key in obj) { 
    array.push(obj[key]); 
} 

配列の要素がオブジェクトと同じ順序になるという保証はありません。

+0

ありがとうございました.. !!!! –

1

単にoutput配列内の項目の順序が同じになるという保証がないことを、この

var output = Object.keys(obj).map(function(key){ 
    return obj[key]; 
}) 

注意をしてみてくださいあなたのオブジェクトのキー値の順序のように表示されます。

順序が重要な場合は、そのオブジェクト自体

var obj { 
"9417702107": 
{ 
    "name": "Sunny", 
    "phone": "9417702107", 
    "exists": true, 
    "order_sequence" : 1 
}, 
"8826565107": { 
    "name": "Gurwinder", 
    "phone": "8826565107", 
    "exists": true, 
    "order_sequence" : 1 
} 
} 

、その後、配列に変換した後、あなたはorder_sequence

var output = Object.keys(obj).map(function(key){ 
    return obj[key]; 
}).sort(function(a,b){ 
    return a.order_sequence - b.order_sequence; 
}); 
+0

しかし、結果の配列に要素がどのような順序で表示されるかは保証されていません。 – Alnitak

+0

@Alnitakはい、この配列が動的に生成される場合はtrueです。 – gurvinder372

+0

@ gurvinder372次に代替手段は何ですか?ヴィア。 –

0

Object.keysとfor-cycleを使用します。

var keys = Object.keys(input), output = []; 
for (var i = 0, length = keys.length; i < length; ++i) 
    ouptput.push(input[keys[i]]); 
console.log(output); 

いくつかのヒント: - :少数の関数呼び出し、より高いパフォーマンス
この場合、サイクルがあるため、今日JSエンジンで、マップ機能よりも移動パフォーマンスを提供します。
- for(var k in input){})はObject.keysより遅く、/ whileを循環します。

これは、今日の実装であるGoogle V8とMozilla SpiderMonkeyでも受け入れられます。

+0

同じままにするために何らかの保証がありますか? –

関連する問題