【问题标题】:How to remove all elements of an object by the keys如何通过键删除对象的所有元素
【发布时间】:2021-04-12 16:38:03
【问题描述】:

我只是想弄清楚通过执行 onClick 函数删除对象的所有元素的最佳方法是什么。这个想法是处理程序应该删除所有元素。我尝试了几个选项,包括使用删除关键字和过滤。但是,当我单击全部清除按钮时,它不会删除任何内容。请参阅下面的代码。谢谢

这里是对象键的控制台日志:

【问题讨论】:

  • 需要itemConfigs的信息
  • 如您所知,filteredStoppedItems 是一个数组。您可以使用拼接,但不能删除,尽管在这种情况下最好的方法就是创建一个空数组。
  • @Yossi ,你可以删除数组中的一个项目,但这并不常见,因为它与array[index] = undefiend相同
  • delete filteredStoppedItems[index]where index 应该是 0..3,但是你通过 index: 16,14,11,8 哪个不存在...
  • Opps,完全忘记包含 itemConfigs 的图像。我已经更新了帖子以显示它。谢谢!

标签: javascript reactjs object filter key


【解决方案1】:

为什么要删除所有带有forEach的元素,只需为其分配一个新的空对象;

let obj = {
  happy: 0.6,
  neutral: 0.1,
  said: 0.3,
};

console.log(obj);

obj = {};

console.log(obj);

【讨论】:

    【解决方案2】:

    您可以使用 lodash omit 创建一个新对象

    import omit from 'lodash/omit';
    
    const itemConfigs = [{
        mode: 1,
        status: "STOPPED",
        value: 10
      },
      {
        mode: 1,
        status: "COMPLETED",
        value: 11
      },
      {
        mode: 1,
        status: "PENDING",
        value: 13
      },
      {
        mode: 1,
        status: "STOPPED",
        value: 12
      }
    ];
    
    const filteredStoppedItems = Object.keys(itemConfigs).filter(
      (key) =>
      (itemConfigs[key].status === "STOPPED" ||
        itemConfigs[key].status === "COMPLETED" ||
        itemConfigs[key].status === "FAILED") &&
      itemConfigs[key].mode !== null
    );
    
    console.log("FILTEREDSTOPPEDITEMS", filteredStoppedItems);
    
    console.log(omit(itemConfigs, filteredStoppedItems));

    【讨论】:

      猜你喜欢
      • 2018-07-06
      • 2016-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-25
      • 1970-01-01
      • 2013-04-06
      • 1970-01-01
      相关资源
      最近更新 更多