从Dictionary React js中删除条目的最佳方法

6mzjoqzu  于 2023-01-21  发布在  React
关注(0)|答案(7)|浏览(159)

我的代码中有一个名为CarValues的字典,其中包含以下数据:CarValues是在状态中初始化的字典。

dictionary: CarValues

key ==> string

Value ==> Array

key => Honda, Value => white, yellow, red, orange
key => Toyota, Value => white, yellow, green, black
Key => Volkswagen Value => 123, 456, 343

我想把本田和它的价值完全从车值中删除。虽然,我看到一些类似的问题,我找不到这个问题的最佳解决方案。
How can I remove an attribute from a Reactjs component's state object

brccelvz

brccelvz1#

这应该可以解决您的问题

yourMethod(key) {
  const copyCarValues= {...this.state.CarValues}
   delete copyCarValues[key]
  this.setState({
     CarValues: copyCarValues,
  })
}
tmb3ates

tmb3ates2#

我相信为了真正做到这一点而不改变状态,您将需要像这样重新创建整个状态。

class Test extends React.Component {
  state = {
    thingToDelete: {},
    otherStuff: {}
  };

  deleteThingToDelete = () => {
    const {thingToDelete, ...state} = this.state;
    this.setState(state);
  }
}

使用spread操作符,我们实现了一个浅克隆,所以要小心。另一个选项是使用Object.assign,但这也只提供了一个浅克隆,但你会实现更好的浏览器支持。

68de4m5k

68de4m5k3#

可能到这里有点晚了,但是这里有一种方法可以用钩子来完成,而不需要实际改变前一个状态。

const sampleItems = {
  'key1': { id: 1, name: 'test'},
  'key2': { id: 2, name: 'test2'},
}

const Test = props => {
  const [items, setItems] = useState(sampleItems);

  deleteItemFromStateObject = itemKey => {
    setItems(({[itemKey]: toDelete, ...rest}) => rest);
  }
}
1aaf6o9v

1aaf6o9v4#

最简单的方法是:

const carValues = Object.assign({}, this.state.carValues)
delete carValues[key]
this.setState({ carValues })
ac1kyiln

ac1kyiln5#

您可以使用Underscore.js或Lodashhttp://underscorejs.org/#omit

_.omit(copyCarValues, 'Honda');
r1wp621o

r1wp621o6#

首先全局初始化阵列

var dict = []

将对象添加到字典

dict.push(
     { key: "One",value: false},
     { key: "Two",value: false},
     { key: "Three",value: false});

Output : 
   [0: {key: "One", value: false},
    1: {key: "Two", value: false},
    2: {key: "Three", value: false}]

从字典更新对象

Object.keys(dict).map((index) => {        
  if (index == 1){
    dict[index].value = true
  }
});

Output : 
   [0: {key: "One", value: false},
    1: {key: "Two", value: true},
    2: {key: "Three", value: false}]

从字典中删除对象

Object.keys(dict).map((index) => {              
      if (index == 2){
        dict.splice(index)
      }
    });

Output : 
    [0: {key: "One", value: false},
     1: {key: "Two", value: true}]
j8ag8udp

j8ag8udp7#

下面是另一个简单的解决方案。

const myCarsValueInState = this.state.myCarsValueInState;
    Object.keys(myCarsValueInState).map((index) => {
      myCarsValueInState[index] = undefined; // you can update on any condition if you like, this line will update all dictionary object values. 
      return myCarsValueInState;
    });

很简单。

相关问题