javascript - 在嵌套的二维对象数组中查找一个值并删除该值
问题描述
我有一个这样的嵌套数组:
array = [
[
'Bear',
[
{
name: 'bob',
age: '17,'
},
{
name: 'sam',
age: '18,'
},
],
],
[
'dog',
[
{
name: 'bon',
age: '19,'
},
],
],
];
我需要删除/移除这个对象:{ name: 'bon', age: '19,' },如果上面的数组没有对象,那么上面的数组,在这种情况下是 dog,也应该被删除最干净的方法是什么?我试过过滤器,但无济于事。不知道如何以干净的方式做到这一点。任何帮助将非常感激。
解决方案
如果你想删除项目name === 'bon'
,然后想根据过滤器的计数删除兄弟数组,你可以像这样使用reduce
和filter
:
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)
推荐阅读
- python - python 用 sort() 替换使用 lambda 键的排序
- javascript - javascript regex 惰性匹配是如何工作的?
- python - 如何在不阻塞系统的情况下进行循环
- c# - C# 线程中止发生“安全句柄已关闭”
- java - java - 如何计算我在java中的程序的每个X和O的获胜次数?
- python - PyJulia 构建失败;导入期间在当前路径中找不到包“Pkg”?
- docker - 如何在Docker Desktop自带的kubernetes mini-cluster中暴露低号端口
- c# - 自重启自包含单文件 dotnet 核心控制台应用程序
- php - 调整图片大小,添加水印,然后保存
- javascript - 如何将 AJAX 成功变量存储为 AJAX 之外的变量?