Javascript 复制和更新数组中对象的属性

Javascript 复制和更新数组中对象的属性,javascript,redux,spread-syntax,Javascript,Redux,Spread Syntax,对于使用redux的应用程序,我有一个数组,我想更新一个对象的一些属性。因为它是redux,我需要一个数组的副本,所以我想使用spread操作符 输入: const original = [{a: "original a", b: "original b"}, {c: "original c", d: "original d"}]; 我尝试的是: const output = [...o1, Object.assign({}, o1[0], { a: "new value" })]; cons

对于使用redux的应用程序,我有一个数组,我想更新一个对象的一些属性。因为它是redux,我需要一个数组的副本,所以我想使用spread操作符

输入:

const original = [{a: "original a", b: "original b"}, {c: "original c", d: "original d"}];
我尝试的是:

const output = [...o1, Object.assign({}, o1[0], { a: "new value" })];
console.log(o2);
这不会更新数组中的第一个对象,而是将新对象追加到数组中

//what I want to be the output
[{ a: "updated a", b: "updated b" },{ c: "original c", d: "original d" } ]
也许你应该用

Object.assign
用于替换对象的某些属性:

// example object
let obj = { a: "original", b: "original" };

// use object.assign to create a new updated object 
// maybe you want to update `a` property
let updated_obj = Object.assign({}, obj, { a: "new value });

console.log(updated_obj); //{ a: "new value", b: "original" }
也许你应该用

Object.assign
用于替换对象的某些属性:

// example object
let obj = { a: "original", b: "original" };

// use object.assign to create a new updated object 
// maybe you want to update `a` property
let updated_obj = Object.assign({}, obj, { a: "new value });

console.log(updated_obj); //{ a: "new value", b: "original" }

您正试图将数组扩展到一个对象中,并添加输出正确的附加键。如果希望获得所需的输出,则必须在使用“扩展”操作符之前使关键帧相同。也就是说,如果希望覆盖第0个位置的对象关键帧,则必须将其合并到对象数组中,该数组的第0个位置的元素将覆盖关键帧

const o1 = [
  { a: "original a", b: "original b" },
  { c: "original c", d: "original d" }
];

const updatedObj = [
  {
    a: "updated a",
    b: "updated b"
  }
];
const mergeObj = { ...o1, ...updatedObj };
const o2 = Object.values(mergeObj);
console.log(o2);

您正试图将数组扩展到一个对象中,并添加输出正确的附加键。如果希望获得所需的输出,则必须在使用“扩展”操作符之前使关键帧相同。也就是说,如果希望覆盖第0个位置的对象关键帧,则必须将其合并到对象数组中,该数组的第0个位置的元素将覆盖关键帧

const o1 = [
  { a: "original a", b: "original b" },
  { c: "original c", d: "original d" }
];

const updatedObj = [
  {
    a: "updated a",
    b: "updated b"
  }
];
const mergeObj = { ...o1, ...updatedObj };
const o2 = Object.values(mergeObj);
console.log(o2);

我仍然关心输入和输出。您应该记住,一个对象不能有重复的键,但是一个数组可以多次有相同的元素。根据您所需的输出,输入和解决方案可以采用这种方式

const o1 = {a: "original a", b: "original b"};
const o2 = {c: "original c", d: "original d"};
const o3 = {a: "updated a", b: "updated b"};

o4 = {...o1, ...o2, ...o3};
console.log(o4);

我仍然关心输入和输出。您应该记住,一个对象不能有重复的键,但是一个数组可以多次有相同的元素。根据您所需的输出,输入和解决方案可以采用这种方式

const o1 = {a: "original a", b: "original b"};
const o2 = {c: "original c", d: "original d"};
const o3 = {a: "updated a", b: "updated b"};

o4 = {...o1, ...o2, ...o3};
console.log(o4);

使用Shubham Gupta的想法,我选择了object assign,而不是destructuring,而且似乎很有效

const o1 = [
  { a: "original a", b: "original b" },
  { c: "original c", d: "original d" }
];

const updatedObj = [
  { a: "updated a",
    b: "updated b"
  }
];

const o2 = Object.assign(o1,updatedObj);
console.log(o2);
示例代码在这里

使用Shubham Gupta的思想,我选择了object assign,而不是destructuring,似乎很管用

const o1 = [
  { a: "original a", b: "original b" },
  { c: "original c", d: "original d" }
];

const updatedObj = [
  { a: "updated a",
    b: "updated b"
  }
];

const o2 = Object.assign(o1,updatedObj);
console.log(o2);
示例代码在这里

您希望如何进行更新?我可以知道您的预期输出吗?您正在将一个数组扩展到一个对象中。我有点担心您的输出。它应该是对象还是数组?输入和输出对我来说仍然不明确。是
a
b
c
d
真正的键,或者您刚刚提供了它们作为问题的占位符。如果你能发布object的实际数组会更好显示你想要更新吗?我可以知道你的预期输出吗?你正在将数组扩展到object中。我有点担心你的输出。它应该是对象还是数组?输入和输出对我来说仍然不明确。是
a
b
c
d
真正的键,或者您刚刚提供了它们作为问题的占位符。如果您可以发布对象的实际数组,那就更好了