2017-02-20 106 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') 
相关问题