从对象中删除元素时,从父对象中删除js

时间:2018-04-04 08:48:54

标签: javascript reactjs

我有一些状态数据,在一个方法我试图从状态数据中删除一些东西,所以我已经将状态数据分配给一个变量并从该变量中删除了一些数据,但是它从那个状态对象中删除了我不想要,为什么会这样,以及如何阻止它。

this.state.Columns = [{columnName: "ABC", columnType: "BCD", moduleName: "OIU"},
                        {columnName: "BCD", columnType: "KIO", moduleName: "NHJ"},
                            {columnName: "BHY", columnType: "NJH", moduleName: "MKO"}]

let {columnsForModule} = this.state;                        
let columnForModule = this.state.Columns;

let columnsByModule = Lodash.groupBy(columnForModule, "moduleName");

moduleItems= ["MKO","NHJ","OIU"];


for(var i = 0 ; i < moduleItems.length ; i++){
      if(columnsByModule[moduleItems[i]]){

        let columnModule = columnsByModule[moduleItems[i]];
        for(var m=0;m<columnModule.length;m++){
          var key = "moduleName";
          console.log(columnModule[m]);
          columnModule[m] = delete columnModule[m][key];
          columnsForModule.push(columnModule[m]);
        }
      }
    }

在我想要的所有迭代之后,

this.state.Columns = [{columnName: "ABC", columnType: "BCD", moduleName: "OIU"},{columnName: "BCD", columnType: "KIO", moduleName: "NHJ"},{columnName: "BHY", columnType: "NJH", moduleName: "MKO"}]

this.state.columnsForModule = [{columnName:“ABC”,columnType:“BCD”},    {columnName:“BCD”,columnType:“KIO”},{columnName:“BHY”,columnType:“NJH”}]

我的问题是从columnModule[m][Key]删除它从根对象this.state.Columns删除时,我不想要这个。

1 个答案:

答案 0 :(得分:1)

您需要在进行任何更改之前克隆对象,因为javascript对象通过引用工作。您可以使用spread operator syntax制作浅色副本。但是,由于您尝试修改嵌套数据,因此需要进行深度克隆。

group = df.columns[np.r_[0:3, 3:len(df.columns)]]
 res = df1.groupby(group)['Order'].apply(list).mean().reset_index()