包含 obj 的 Javascript 数组数组,仅获取包含具有特定键的 obj 的数组

Pau*_*aul -1 javascript arrays json object

我有包含 obj 的数组数组,我应该只获取包含具有特定键的 obj 的数组。

我尝试使用双过滤器,但它不起作用。

你能给我一些建议吗?

let result = [
  [
    {
      "id": 1
    },
    {
      "id": 2
    }
  ],
  [
    {
      "id": 3
    },
    {
      "id": 4
    },
    {
      "id": 5,
      "type": {
        "id": 1555
      }
    }
  ],
  [
    {
      "id": 6,
      "type": {
        "id": 5456
      }
    }
  ]
];

const c = result.filter(array => array.filter(a => a.hasOwnProperty('type') === true));

console.log(c);
Run Code Online (Sandbox Code Playgroud)

结果:

[
  [
    {
      "id": 3
    },
    {
      "id": 4
    },
    {
      "id": 5,
      "type": {
        "id": 1555
      }
    }
  ],
  [
    {
      "id": 6,
      "type": {
        "id": 5456
      }
    }
  ]
]
Run Code Online (Sandbox Code Playgroud)

Ola*_*son 5

你的过滤器函数中的过滤器是错误的,因为你不想返回一个新的集合,你想返回一个布尔表达式。Array.some()帮助并检查该子数组中是否有任何项目具有此属性。

let result = [
  [{
      "id": 1
    },
    {
      "id": 2
    }
  ],
  [{
      "id": 3
    },
    {
      "id": 4
    },
    {
      "id": 5,
      "type": {
        "id": 1555
      }
    }
  ],
  [{
    "id": 6,
    "type": {
      "id": 5456
    }
  }]
];

const validArrays = result.filter(subArray => subArray.some(item => item.hasOwnProperty('type')));

console.log(validArrays);
Run Code Online (Sandbox Code Playgroud)