json 在react js中从对象中移除键值

cnh2zyt3  于 2023-08-08  发布在  React
关注(0)|答案(5)|浏览(148)

我在本州有个目标,

this.state = {
   selectedValue: {}
}

字符串
现在,我在这里添加一个属性到这个由对象在以下方式

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


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

c0vxltue

c0vxltue1#

最好的方法是给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})

myzjeezk

myzjeezk2#

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

字符串
您可以从对象iself中删除resumeId。

zwghvu4y

zwghvu4y3#

使用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);

fzwojiic

fzwojiic4#

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

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

字符串
我认为这是最好的办法。
请记住,您可能不需要if(current)部分。

vi4fp9gy

vi4fp9gy5#

要从React中的对象中删除键值对,您可以使用spread操作符创建对象的副本,然后从副本中删除所需的键。最后,用新对象更新状态。以下是您的操作方法:
让我们假设你想从selectedType对象中删除带有键resumeId的键值对:

if (e.currentTarget.checked) {
  // Create a copy of the selectedType object
  const updatedSelectedType = { ...this.state.selectedType };

   // Replace the property with undefined or use delete keyword
  const { resumeId } = someData; // Assuming you have the resumeId
  updatedSelectedType[resumeId] = undefined; // or delete 
 updatedSelectedType[resumeId];

  // Update the state with the modified object
   this.setState({
      selectedType: updatedSelectedType
    });
   }

字符串

相关问题