【问题标题】:Remove Items from array based on Key根据键从数组中删除项目
【发布时间】:2020-10-19 10:56:54
【问题描述】:

我有 MAinArray

MainArray=[{
{First Name: "First Name"},
{Last Name: "Contact"},
{Last Name: "Contact"}
]

我想从这个数组中删除键值对,例如

if (key == 'First Name')
{
delete MainArray[key] /// this doesnt work
}

最终结果必须是

ResultArray=[{
    {Last Name: "Contact"},
    {Last Name: "Contact"}
    ]

【问题讨论】:

  • 对于要使用Splice的数组,而不是删除
  • 这不起作用,因为MainArray 是索引数组而不是对象。因此,delete MainArray[key] 由于未定义 MainArray[key] 而失败。如果您使用delete MainArray[0],该条目将被删除(注意:已删除,而不是从数组中删除)。

标签: javascript arrays typescript multidimensional-array


【解决方案1】:

filter() 方法也可用于根据给定条件删除项目,请参见下面的示例:

let data=[
{"First Name": "First Name"},
{"First Name": "First Name"},
{"Last Name": "Contact"},
{"Last Name": "Contact"}
]

const keyToRemove = "First Name"; //Key to remove

data = data.filter(x => !x[keyToRemove]);

console.log(data);

【讨论】:

    【解决方案2】:

    您可以使用filter 并在其中获取当前对象的Object.keys 并检查它是否包含给定的过滤器:

    var MainArray=[ {'First Name': "First Name"}, {'Last Name': "Contact"}, {'Last Name': "Contact"} ];
    
    var result = MainArray.filter(item=>!Object.keys(item).includes('First Name'));
    
    var result2 = MainArray.filter(item=>!item['First Name']);
    
    console.log(result);
    console.log(result2);

    【讨论】:

    • 有效,但这会创建一个新的不必要的对象,从技术上讲,这不是问题。
    猜你喜欢
    • 2022-12-12
    • 2020-11-06
    • 2021-06-18
    • 1970-01-01
    • 2019-10-03
    • 2021-10-19
    • 2020-03-25
    • 2021-08-03
    • 2021-10-03
    相关资源
    最近更新 更多