javascript - 无法理解为什么我收到 ReferenceError

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

但是我收到了一个错误...谁能解释一下为什么我会收到这个错误?

最佳答案

首先,您必须使用字符串作为键,因此以这种方式调用您的函数:

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 });
}

关于javascript - 无法理解为什么我收到 ReferenceError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49464366/

相关文章:

Javascript - 如何在运行时动态创建对象?

javascript - Canvas 中鼠标悬停错误

javascript - 我如何将我的数据附加到嵌套对象中?

javascript - 如何读取从 ajax 返回的数据数组以获取 google 图表?

javascript - React : Warning: validateDOMNesting(. ..): 文本节点不能作为 <tbody> 的子节点出现

javascript - 与 JavaScript Arguments 对象混淆的行为

javascript - Backbone.Collection 触发 'reset' 但不是 'add'

javascript - FullCalendar refetchEvents 不重新加载日历

javascript - 避免浏览器插件弄乱代码?

php - 客户端和服务器端验证