对于使用redux的应用程序,我有一个数组,我想更新一个对象的某些属性。因为它是redux,所以我需要数组的副本,因此我想使用散布运算符。
输入:
Number of leading zeroes = 9 - digits in num
我尝试过的事情:
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);
答案 0 :(得分:1)
也许您应该使用Object.assign
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" }
答案 1 :(得分:1)
您正在尝试将数组扩展到一个对象中,并添加其他正确输入的键。如果要获得所需的输出,则必须在使用扩展运算符之前使键相同,即,如果要覆盖对象在第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);
答案 2 :(得分:1)
使用Shubham Gupta的想法,我没有进行破坏性的工作,而是去分配对象并且似乎可以工作
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);
答案 3 :(得分:0)
输入和输出仍然对我很重要。您应该记住,一个对象不能有重复的键,但是一个数组可以多次具有相同的元素。根据您所需的输出,输入和解决方案可以采用这种方式。
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);