首页 > 解决方案 > 根据对象的键名过滤对象数组

问题描述

我有一个看起来像这样的对象数组:

var data = [
    {
        abc: { name:"abc" }
    },
    {
        new_abc:  {name:"hello" }
    },
    {
        def: { name:"def" }
    },
    {
        ghi: { name:"ghi" }
    },
    {
        new_ghi: { name:"world" }
    },
    {
        new_jkl: { name:"javascript" }
    },
    {
        lmn: { name:"lmn" }
    },
];

我只想要具有名称以 "new" 开头的键的对象。在上面的数组中,我有 3 个这样的对象。

我希望输出是这样的:

[
    {
        new_abc:{name:"hello"}
    },
    {
        new_ghi:{name:"world"}
    },
    {
        new_jkl:{name:"javascript"}
    },
]

标签: javascriptarraysobject

解决方案


您可以执行以下操作,

var data = [
 {
  abc:{name:"abc"}
 },
 {
  new_abc:{name:"hello"}
 },
 {
  def:{name:"def"}
 },
 {
  ghi:{name:"ghi"}
 },
 {
  new_ghi:{name:"world"}
 },
 {
  new_jkl:{name:"javascript"}
 },
 {
  lmn:{name:"lmn"}
 }
]


res = data.filter(item => Object.keys(item).some(key => key.indexOf('new') === 0));
console.log(res);


推荐阅读