2017-02-20 75 views
0

我有三個人的陣列。我想基於一系列索引一次將多個對象添加到多個對象。顯然,我嘗試使用多個索引不起作用,但我似乎無法找到正確的方法。如何將新密鑰添加到對象數組的多個索引中?

var array = [ 
    { 
    "name": "Tom", 
    }, 
    { 
    "name": "Dick", 
    }, 
    { 
    "name": "Harry", 
    } 
]; 

array[0,1].title = "Manager"; 
array[2].title = "Staff"; 
console.log(array); 

它返回這樣的:

[ 
    { 
    "name": "Tom", 
    }, 
    { 
    "name": "Dick", 
    "title": "Manager" 
    }, 
    { 
    "name": "Harry", 
    "title": "Staff" 
    } 
] 

,但我想它返回這一點。

[ 
    { 
    "name": "Tom", 
    "title": "Manager" 
    }, 
    { 
    "name": "Dick", 
    "title": "Manager" 
    }, 
    { 
    "name": "Harry", 
    "title": "Staff" 
    } 
] 

回答

0

第一方法::

array[0].title = "Manager"; 
array[1].title = "Manager"; 
array[2].title = "Staff"; 

陣列[0,1]將不起作用。

第二個方法::

for(var i=0;i<array.length;i++) { 
    var msg = "Manager"; 
    if(i===2) { 
     msg = "Staff" 
    } 
    array[i].title = msg 
} 
0

您不能在數組中使用任何分隔符使用多個密鑰。

錯誤:array[x, y] 正確:array[x]array[y]

你的情況,這將是array[0].title = array[1].title = "manager";

0

試試這個:`

for (var i=0; var<= array.length; i++){ 

array[i].title = "manager"; 

}` 

還是讓VAR小於或等於索引鍵的任意n範圍可以圍繞改變它。

編輯:而不是使var < = 1。重點是爲你想要改變標題的索引範圍做循環。

+0

你有很多語法錯誤在那裏。 'for'循環中的條件塊不正確。您正在迭代循環一次額外的時間。最後,你將數組array'中的所有對象的'title'屬性設置爲''manager''。 –

+0

澄清了我的意思與迭代。以及我的條件如何阻止不正確? –

0

您可以使用一個輔助功能,這樣

function setMultiple(array, key, indexes, value) 
{ 
    for(i in array.length) 
    { 
     if(indexes.indexOf(i)>=0){ 
      array[i][key] = value; 
     } 
    } 
} 

然後

setMultiple(array, "title", [0,1], "Manager"); 
0

假設你有一個更大的集陣列的對象。

var array = [ 
    { 
    "name": "Tom", 
    }, 
    { 
    "name": "Dick", 
    }, 
    { 
    "name": "Harry", 
    }, 
    . 
    . 
    . 
]; 

爲要添加像這樣的新密鑰創建一個對象:

let newKeys = { 
    'Manager': [0,2], 
    'Staff': [1] 
} 

現在你可以用所需的指標在這裏添加更多這樣的標題。

與,你可以做喜歡的事:

function addCustomProperty(array, newKeys, newProp) { 
    for (let key in newKeys) {  
    array.forEach((el, index) => { 
     if (key.indexOf(index) > -1) { // if the array corresponding to 
     el[newProp] = key   // the key has the current array object 
     }        // index, then add the key to the 
    })        // object. 
    } 
    return array 
} 

let someVar = addCustomProperty(array, newKeys, 'title') 
相關問題