const a = {x: "Hi", y: "Test"}
const b = ???
// b = {x: "Bye", y: "Test"}
// a = {x: "Hi", y: "Test"}
如何在不改变?
的情况下将x设置为“Bye”答案 0 :(得分:13)
您可以使用Object.assign
:
const a = { x: "Hi", y: "Test" }
const b = Object.assign({}, a, { x: "Bye" });
console.log(b);

或Object.assign
的替代方案是object spread operator。
点差运算符允许您分配"一个对象到另一个对象的所有属性。
我们可以在对象文字中使用它来将a
的所有属性分配到b
:
const additions = { x: "Bye" }
const a = { x: "Hi", y: "Test" }
const b = { ...a, ...additions }
console.log(b);

答案 1 :(得分:8)
答案 2 :(得分:1)
有一种简便的方法可以更改对象属性而又不会使原始对象发生变化。
const a = {x: "Hi", y: "Test"};
const b = {...a, y: "hello"};
答案 3 :(得分:0)
Es6具有内置函数,用于复制对象属性Object.assign
const b = Object.assign({}, a, {x: 'Bye'})
这里我们创建一个空对象,推送所有a
个键值对,然后是我们想要重写的新键值对。因为空对象是第一个参数,我们会改变该对象,而不是a
答案 4 :(得分:0)
尝试以下操作:jq -cn --stream '
fromstream(1|truncate_stream(inputs | select(.[0][0] == "userActivities") | del(.[0][0])))
| select(.localDate[0:7] == "2018-10")
' 2018-10-01T21_45_56Z_triplem-baas_data.json > October_2018_triplem_events.json
这将创建一个新对象,而不会引用旧对象const b = a.map(item => Object.assign({}, ...item));
如果要对数组执行此操作,请尝试使用a
[]