【问题标题】:How to add an array to an array object [closed]如何将数组添加到数组对象[关闭]
【发布时间】:2019-07-25 14:46:07
【问题描述】:

如何将object1 转换为object2?它是来自 API 的 JSON 类型,所以我不能手动将数组的值放入对象中。 Z 实际上是 var z = [4,5,6];一个完全独立的数组。

var object1  = {
  value:[{
    "x": "apple",
    "y": [1,2,3]
 }]
};

var object2 = {
  value:[{
    "x": "apple",
    "y": [1,2,3],
    "z": [4,5,6]
  }]
};

【问题讨论】:

  • 为什么不能使用value 操作对象将z 设置为[456]
  • 所以 var z = [4,5,6];是一个单独的数组,它不是object2内部的指定字段
  • 试试:object1.value[0].z = z;
  • 哇 object1.value[0].z = z;实际工作!非常感谢:D
  • 那么... var object2 = {...object1, z: [4, 5, 6]} 怎么样?

标签: javascript arrays json api object


【解决方案1】:

你可以访问数组并更新它:

const updateObjectAtIndex = (arr, index, newData) => {
  const clone = [...arr];
  const result = {
    ...clone[index],
    ...newData
  };
  
  clone[index] = result;
  
  return clone;
}

var object1  = {
  value:[{
    "x": "apple",
    "y": [1,2,3]
 }]
};

var object2 = {
  ...object1,
  value: updateObjectAtIndex(object1.value, 0, {z: [4, 5, 6]})
}

console.dir(object2)

【讨论】:

  • 为什么不只是object1.value[0].z = [4, 5, 6]
  • @Titus 因为这会改变object1,所以你可以同时将z 设置为[4, 5, 6]。不知道这是否是一个问题,但问题似乎暗示他们想要单独的对象
  • 我想我想要@Titus 提到的内容。谢谢你的回答,奥利弗。
  • 哦,我明白了,我将object1...object2 解释为同一个对象的不同状态,而不是两个不同的对象。
  • @Titus 似乎无论如何这都是正确的,所以一切都很好,结局很好哈
【解决方案2】:

Object.assign() 方法用于复制所有的值 从一个或多个源对象到目标的可枚举自身属性 目的。它将返回目标对象。

var object1  = {
  value:[{
    "x": "apple",
    "y": [1,2,3]
 }]
};

var object2 = {
  value:[{
    "x": "apple",
    "y": [1,2,3],
    "z": [4,5,6]
  }]
};

const object3 = Object.assign(object1, object2);

console.log(object3);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-16
    • 2021-06-02
    • 1970-01-01
    相关资源
    最近更新 更多