【问题标题】:Delete properties from object with wildcard [duplicate]使用通配符从对象中删除属性[重复]
【发布时间】:2017-10-09 07:35:22
【问题描述】:

我正在尝试使用某种通配符从对象中删除多个项目。 该对象可能如下所示:

myObject = {
    id_0: {...},
    id_1: {...},
    id_2_radio_0: {...},
    id_2_radio_1: {...},
    id_2_radio_2: {...},
    id_5: {...},
    id_21: {...}
}

我希望能够做这样的事情(伪代码):

delete myObject['id_2_' + *] 

所以它会删除所有以“id_2_”开头的键的元素

有没有合理的方法来做到这一点?或者收集与我的通配符匹配的所有键的数组,并通过该数组删除每个元素。

希望我对问题的描述不要太混乱!

这是一个真实 JSON 的示例:

{
    "jy-id-1_radio_0":{ "label":"alternativ 1", "reference":"jy-id-1" },
    "jy-id-1_radio_1":{ "label":"alternativ 2", "reference":"jy-id-1" },
    "jy-id-2":{ "label":"kryssruta", "reference":"jy-id-2" },
    "jy-id-3":{ "label":"kryssruta", "reference":"jy-id-3" }
}

【问题讨论】:

  • 你能分享一个示例 JSON 吗?
  • 那么, myArray 是一个数组吗?它看起来更像一个物体。
  • 详细说明您的问题:您发布的结构不是数组
  • 你说得对。对不起。现在改了。
  • 这使得这是一个重复:P

标签: javascript jquery arrays filter


【解决方案1】:

如果字符串以给定模式开头,您可以迭代键并删除。

var object = {
  id_0: {},
  id_1: {},
  id_2_radio_0: {},
  id_2_radio_1: {},
  id_2_radio_2: {},
  id_5: {},
  id_21: {}
};

Object.keys(object).forEach(function (k) {
    if (k.startsWith('id_2_')) {
        delete object[k];
    }
});

console.log(object);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-28
    • 1970-01-01
    • 2018-05-27
    • 2021-06-18
    • 2012-04-17
    • 1970-01-01
    • 2013-05-05
    • 2015-08-06
    相关资源
    最近更新 更多