Javascript 更新数组中对象的值

Javascript 更新数组中对象的值,javascript,Javascript,我有一个如下所示的对象数组: [ { "id": 123, "timeStamp": "\"2019-07-08T20:36:41.580Z\"", "data": [1, 2, 3] }, { "id": 234, "timeStamp": "\"2019-07-08T20:37:12.472Z\"", "data": ["Apples", "Oranges"] } ] 我希望更新数组中某个对象的

我有一个如下所示的对象数组:

[
   {
      "id": 123,
      "timeStamp": "\"2019-07-08T20:36:41.580Z\"",
      "data": [1, 2, 3]
   },
   {
      "id": 234,
      "timeStamp": "\"2019-07-08T20:37:12.472Z\"",
      "data": ["Apples", "Oranges"]
   }
]
我希望更新数组中某个对象的特定属性的值,但也希望确保在新数组中返回结果

如何在不运行某种类型的循环(例如,
for
循环)的情况下执行此操作


比方说,我想更新第二个对象的
数据
属性,并向其中添加
香蕉

如果希望结果是一个新数组,首先必须克隆该数组。这可能比你想象的要复杂(取决于你希望克隆的深度)。一种方法是使用JSON字符串化

请记住,JSON技巧实际上是在幕后进行循环。如果你真的想复制数组,这是不可避免的

要按ID查找对象,请使用Array.find()

let original=[
{
“id”:123,
“时间戳”:“2019-07-08T20:36:41.580Z\”,
“数据”:[1,2,3]
},
{
“id”:234,
“时间戳”:“2019-07-08T20:37:12.472Z\”,
“数据”:[“苹果”、“橙子”]
}
]
让copy=JSON.parse(JSON.stringify(original));
copy.find(obj=>obj.id==234.data.push(“香蕉”);
控制台日志(副本);

像这样的东西可以达到以下目的:

 let arr = [
    {
     "id": 123,
     "timeStamp": "\"2019-07-08T20:36:41.580Z\"",
     "data": [1, 2, 3]
    },
    {
     "id": 234,
     "timeStamp": "\"2019-07-08T20:37:12.472Z\"",
     "data": ["Apples", "Oranges"]
     }
  ]

 arr[1]['data'] = [...arr[1]['data'], 'Bananas']

 console.log(arr)

例如:您可以这样做:假设您的对象数组保存在
test
变量中

test[1].data.push("Bananas")

您需要某种循环来迭代数组:它可以是显式的,也可以是隐式的。如果要使数组保持数组形式,您需要以某种方式循环此数组,除非跟踪数组中每个对象的索引,在这一点上,你只是使用了一个带有额外步骤的对象。这非常接近我想要的,但我可能并不总是知道我想要更新的对象的索引。那么你打算如何识别你想要修改的对象呢?按id?我想使用
id
属性来标识我需要更新的对象查看我所做的编辑–您可以使用Array.find来获取数组中具有特定id的第一个元素(这里我将id设置为234,但可能id是传递给函数的变量),非常好!非常感谢。我假设更改值只是一个赋值,例如
copy.find(obj=>obj.id==234)“…但还要确保我在新数组中返回结果。”根本不回答OP问题。