2017-03-22 10 views
1

次の配列の各要素に追加のキー値のペアを追加するにはどうすればよいですか?辞書の配列を変更して各要素を追加する

get_project_list.completed = [{"user":"xyz","email":"[email protected]"}] 
for (var i in get_project_list.completed) { 
    i['status'] = "completed"; 
} 

O/P [{"user":"xyz","email":"[email protected]","status":"completed"}]

あり、これに簡単な解決策になるはずですが、働いていたものを見つけることができませんでした。

何か助けていただければ幸いです。

答えて

1

配列のループをfor inループしないでください。これは、すべての列挙可能なプロパティに対して反復処理を行うためです。

たとえば、ここでは列挙可能な新しいプロパティを配列に追加し、ループにはfor inループもあります。

var arr = [{"user":"xyz","email":"[email protected]"}]; 
 
Object.defineProperty(arr, 'custom', { value: 'myCustom', enumerable: true }); 
 

 
for(let prop in arr){ 
 
    console.log(prop); 
 
}

あなたが

1を介して行うことができますES6を使用している場合)forEach機能

var arr = [{"user":"xyz","email":"[email protected]"}]; 
 

 
arr.forEach(item => item['status'] = 'completed'); 
 

 
console.log(arr);

2)ES5for ofループ

var arr = [{"user":"xyz","email":"[email protected]"}]; 
 
    
 
for(let item of arr){ 
 
    item['status'] = 'completed'; 
 
} 
 

 
console.log(arr);

、あなたが使用できる簡単なfor loop

var arr = [{"user":"xyz","email":"[email protected]"}]; 
 

 
for(var i = 0; i < arr.length; i++){ 
 
    arr[i]['status'] = 'completed'; // get the current index-th item 
 
} 
 

 
console.log(arr);

1

インデックスはforループ内にあり、配列と一緒に使用する必要があります。配列の場合

var get_project_list = { completed: [{"user":"xyz","email":"[email protected]"}] }, 
 
    i; 
 
    
 
for (i in get_project_list.completed) { 
 
    get_project_list.completed[i]['status'] = "completed"; 
 
} 
 
    
 
console.log(get_project_list);
get_project_list.completed[i]['status'] = "completed"; 
// ^^^^^^^^^^^^^^^^^^^^^^^^^^ 

は、私はあなたがすべて列挙のプロパティを取得し、順序が保証されていないので、カウンターでforループを使用することをお勧めします。

var get_project_list = { completed: [{"user":"xyz","email":"[email protected]"}] }, 
 
    i; 
 
    
 
for (i = 0; i <get_project_list.completed.length; i++) { 
 
    get_project_list.completed[i]['status'] = "completed"; 
 
} 
 
    
 
console.log(get_project_list);

1

あなたは(例えばバベルで)transpilingしている場合、私の代わりに、オブジェクトの拡散オペレータとの組み合わせでmap機能を使用してお勧めしたいです。

let newList = get_project_list.completed.map(i => 
    {... i, status : "completed" } 
) 

この方法では、古いアレイを突然変異させる必要はありません。

関連する問題