首页 > 解决方案 > 在嵌套的二维对象数组中查找一个值并删除该值

问题描述

我有一个这样的嵌套数组:

array = [
  [
    'Bear',
    [
      {
        name: 'bob',
        age: '17,'
      },
      {
        name: 'sam',
        age: '18,'
      },
    ],
  ],
  [
    'dog',
    [
      {
        name: 'bon',
        age: '19,'
      },
    ],
  ],
];

我需要删除/移除这个对象:{ name: 'bon', age: '19,' },如果上面的数组没有对象,那么上面的数组,在这种情况下是 dog,也应该被删除最干净的方法是什么?我试过过滤器,但无济于事。不知道如何以干净的方式做到这一点。任何帮助将非常感激。

标签: javascriptarraysecmascript-6

解决方案


如果你想删除项目name === 'bon',然后想根据过滤器的计数删除兄弟数组,你可以像这样使用reducefilter

const array = [['Bear',[{name:'bob',age:'17,'},{name:'sam',age:'18,'},],],['dog',[{name:'bon',age:'19,'}]]];
const name = 'bon';

const output = array.reduce((acc,[animal, people]) => {
  const filtered = people.filter(a => a.name !== name);
  if(filtered.length > 0) 
    acc.push([animal, filtered]);
  return acc;
}, [])

console.log(output)


推荐阅读