2017-03-22 2 views
1

hinzufügen Wie könnte ich einen zusätzlichen Schlüssel Wertpaar zu jedem Element in dem folgenden Array hinzuzufügen.Ändern Sie eine Reihe von Wörterbüchern, ein Element in jedem

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"}]

Es sollte eine einfache Lösung für dieses, aber konnte man nicht finden, die funktioniert.

Jede Hilfe wird geschätzt.

Antwort

1

Sie for in Schleife nicht für Arrays verwendet werden, da es jede zählbare Eigenschaft iteriert.

Zum Beispiel füge ich dem Array eine neue Eigenschaft hinzu, die aufzählbar ist und in der for in Schleife bekomme ich es auch.

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

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

Wenn Sie ES6 verwenden, können Sie tun über

1)forEach Funktion

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

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

 
console.log(arr);

2) for of Schleife

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

 
console.log(arr);

Mit ES5, können Sie einfach verwenden 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

Sie erhalten den Index in der for-Schleife und müssen es zusammen mit dem Array verwenden.

get_project_list.completed[i]['status'] = "completed"; 
// ^^^^^^^^^^^^^^^^^^^^^^^^^^ 

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);

Für Arrays, schlage ich eine mit einem Zähler für Schleife zu verwenden, da Sie alle enumerable Eigenschaften erhalten und die Bestellung nicht garantiert ist.

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

Wenn Sie transpiling (zum Beispiel mit Babel), würde ich vorschlagen, eine map Funktion in Kombination mit dem Objekt Spread Operator stattdessen verwenden.

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

Auf diese Weise müssen Sie das alte Array nicht mutieren.

Verwandte Themen