我有三个人一组。我想基于索引数组一次向多个对象添加一个新键。很明显,我尝试使用多个索引不起作用,但我似乎无法找到正确的方法。
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 :(得分: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
}
答案 1 :(得分:0)
使用数组中的任何分隔符都不能使用多个键。
错误:array[x, y]
正确:array[x]
和array[y]
在您的情况下,它将是array[0].title = array[1].title = "manager"
;
答案 2 :(得分:0)
试试这个:`
for (var i=0; var<= array.length; i++){
array[i].title = "manager";
}`
或者你可以改变它,因此var小于或等于索引中任何n个键范围。
编辑:改为使var&lt; = 1.重点是为要更改标题的索引范围制作循环。
答案 3 :(得分: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");
答案 4 :(得分: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')