obj = [{name: 'Elie'},{name: 'Tim'},{name: 'Elie'}]
function addKeyAndValue(arr,key,value) {
newOne = [];
arr.forEach(function(val,i,arr){
newOne.push(arr[i].key = value);
});
return newOne;
}
我正在尝试传递一个带有键和值的对象数组来添加,如下所示:addKeyAndValue(obj,isItawesome,true)
然后我希望得到类似的东西:
[{name: 'Elie', isItawesome: true},{name: 'Tim', isItawesome: true},{name: 'Elie', isItawesome: true}]
但是我收到了一个错误......任何人都可以解释为什么我会得到它,好吗?
答案 0 :(得分:2)
首先,你必须使用字符串作为键,所以以这种方式调用你的函数:
addKeyAndValue(obj, 'isItawesome', true)
其次,你在这个地方推送一个值,而不是一个对象:
newOne.push(arr[i].key = value);
将其更改为:
newOne.push({...val, [key]: value})
如果你想让它变得更好:
function addKeyAndValue(arr, key, value){
return arr.map(el => ({...el, [key]: value });
}
答案 1 :(得分:1)
您正在错误地调用该函数。做
addKeyAndValue(obj, 'isItawesome', true)
请注意,isItawesome
是一个字符串而不是变量,因此您需要将其包装在引号
答案 2 :(得分:0)
这应该有效
obj = [{name: 'Elie'},{name: 'Tim'},{name: 'Elie'}]
var result = obj.map(function(el) {
var o = Object.assign({}, el);
o.isItawesome = true;
return o;
})
console.log(result);