json 从React JS中的对象中移除键值

thigvfpy  于 2023-06-25  发布在  React
关注(0)|答案(4)|浏览(139)

我在本州有个对象,

this.state = {
   selectedValue: {}
}

现在,我在这里添加了一个属性到这个by对象,方法如下

if (e.currentTarget.checked) {
      this.setState({
        selectedType: {
          ...this.state.selectedType,
          [resumeId]: type
        }
      })

现在,在else部分中,我必须删除匹配resumeId的属性。
或者我需要创建一个array of objects吗?我有点困惑。
有谁能帮我这个忙吗?

zpf6vheq

zpf6vheq1#

最好的方法是给resumId添加一个前缀:

if (e.currentTarget.checked) {
      this.setState({
        selectedType: {
          ...this.state.selectedType,
          [`resume-${resumeId}`]: type
        }
      })

现在,你有办法识别你的简历了。然后遍历selectedType状态并删除resumeId。您可以按以下方式执行此操作:

let selectedType = this.state.selectedType;
for (let key in selectedType) {
  if (key.indexOf('resume') !== -1) {
    delete selectedType[key]
  }
}
this.setState({selectedType})
inkz8wg9

inkz8wg92#

if (e.currentTarget.checked) {
      this.setState({
        selectedType: {
          ...this.state.selectedType,
          [resumeId]: type
        }
      }) else {
        const selectedType = {
          ...this.state.selectedType
        }
        delete selectedType[resumeId];
        this.setState({
          selectedType
        });
      }

您可以从对象本身中删除resumeId。

ngynwnxp

ngynwnxp3#

使用Object destructuring可以清晰地实现这一点:

if (e.currentTarget.checked) {
      this.setState({
        selectedType: {
          ...this.state.selectedType,
          [resumeId]: type
        }
      })
} else {
    // Destructure the resumeId and rest properties
    const { resumeId, ...rest} = this.setState.selectedType;

    // Only assign the rest properties now
    this.setState({ selectedType: ...rest });
}

更新:
检查所有值是否相同:

const data = { "a": "11", "b": "11", "c":"12", "d" : "11" };

const objectValues = Object.values(data);

// Check first value with every value
const isEveryValueSame = objectValues.every(x => x === objectValues[0]);

console.log(isEveryValueSame);
yv5phkfx

yv5phkfx4#

我知道这是一个古老的问题,但我认为它值得一个答案,所以这里是你应该做的:

setState(current => {
    if (current) {
       const { yourRemoveKey, ...rest } = current;
       return rest;
    } else {
       return current;
    }
});

我觉得这是最好的办法。
请记住,您可能不需要if(current)部件。

相关问题