我们可以在 JavaScript 中向不可变对象添加属性吗?

Eug*_*ala 2 javascript ecmascript-6 reactjs immutable.js ecmascript-2017

一个对象就像:

const obj = [{name: 'Alex', age: 20}, {name: 'James', age: 22}];
Run Code Online (Sandbox Code Playgroud)

该对象在 Immutable.js 中是不可变的。

是否可以为每个对象添加一个新密钥?例子:

const obj = [{name: 'Alex', age: 20, city: 'New York'}, {name: 'James', age: 20, city: 'Rome'}];
Run Code Online (Sandbox Code Playgroud)

Ben*_*ard 7

如果它\xe2\x80\x99s 不可变则不是。但这没关系,您可以将所有属性复制到新结构中,并以这种方式添加您需要的任何内容:

\n\n
const newData = obj.map(person => ({\n  ...person,\n  city: someLogicToDetermineCity(person)\n}))\n\nfunction someLogicToDetermineCity(person) {\n  // logic based on person\n  return city\n}\n
Run Code Online (Sandbox Code Playgroud)\n