不明白我为什么得到ReferenceError

时间:2018-03-24 11:54:01

标签: javascript

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

但是我收到了一个错误......任何人都可以解释为什么我会得到它,好吗?

3 个答案:

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