当前位置: 首页 > 面试题库 >

为对象数组创建新属性时,对象不是可扩展错误

越星晖
2023-03-14
问题内容

我有一个需要扩展javascript数组的函数,包括一个名为的新属性selected

export const initSelect = (data) => {

    let newData = data.concat();
    newData.map((item) => {
        item.selected = false;
    })

    return newData;
}

data是一个ReactJS状态值(来自this.state.data调用函数时的值),但这似乎不是问题,因为数组newData的新副本data

我收到以下错误:

TypeError: Cannot add property selected, object is not extensible

问题答案:

您可能需要复制对象:

export const initSelect = (data) => {
 return data.map((item) => ({
     ...item,
     selected: false       
 }));
}


 类似资料:
  • 我创建了一个对象数组,如下所示: 我正在尝试创建一个新数组,该数组过滤位置,使其仅包含不具有相同城市属性的对象(lat/lng重复项可以)。是否有内置的JS或Jquery函数来实现这一点?

  • 我在我的组件中接收道具。我想在此组件中添加一个带有道具的属性“LegendPosition”。我不能那样做。请帮我做这个。我已经尝试过此代码,但没有成功:

  • 编组或取消编组对象 您可以将若干个对象合并到一个组中,把这些对象作为一个单元同时进行处理。这样,您就可以同时移动或变换若干个对象,且不会影响其属性或相对位置。例如,您可能想将徽标设计中的对象编成一组,以便将其作为一个单元进行移动和缩放。 编组对象被连续堆叠在图稿的同一图层上,位于组中最前端对象之后;因此,编组可能会更改对象的图层分布及其在给定图层上的堆叠顺序。如果您选择位于不同图层中的对象并将其编

  • 我在挣扎。 当扩展一个类时,我可以很容易地向它添加一些新属性。 但是,当我扩展基类时,如果我想向基类的对象(简单对象的属性)添加新属性,该怎么办? 下面是一个带有一些代码的示例。 基类 派生类 现在,正如您可以从行内注释中看到的,这将激怒TypeScript。但这在JavaScript中工作。那么,实现这一目标的正确方法是什么呢?如果没有,问题是在我的代码模式本身吗?什么模式适合这个问题? 也许您

  • 出于业务逻辑的原因,我希望能够创建一个具有属性的对象。但我显然不能 因为是在Python中具有特殊含义的保留关键字。但是,使用或动态获取属性也存在同样的问题。我可以这样做吗,还是必须让属性名?

  • 属性的简洁表示法 ES6允许直接写入变量和函数,作为对象的属性和方法。这样的书写更加简洁。 var foo = 'bar'; var baz = {foo}; baz // {foo: "bar"} // 等同于 var baz = {foo: foo}; 上面代码表明,ES6允许在对象之中,只写属性名,不写属性值。这时,属性值等于属性名所代表的变量。下面是另一个例子。 function f(