如何获取json里指定的集合?

作者站长头像
站长
· 阅读数 11

const data = [
    { "id": 1, "name": "Alice",age:[
{id:4,status:0},
{id:4,status:1}
] },
    { "id": 2, "name": "Bob",age:[
{id:4,status:1}
]  },
    { "id": 3, "name": "Charlie",age:[
{id:4,status:1}
]  }
  ]

如何获取status为0的那个集合也就是获取{ "id": 1, "name": "Alice",age:[{id:4,status:0}] },这个集合获取status为1的就是获取另外两个集合

回复
1个回答
avatar
test
2024-06-18

要获取 status 为 0 和 1 的集合,可以使用 JavaScript 的数组方法 filter 来进行筛选。下面是具体的实现方法:

获取 status 为 0 的集合

const data = [
  { "id": 1, "name": "Alice", age: [{ id: 4, status: 0 }] },
  { "id": 2, "name": "Bob", age: [{ id: 4, status: 1 }] },
  { "id": 3, "name": "Charlie", age: [{ id: 4, status: 1 }] }
];

const status0 = data.filter(item => item.age.some(a => a.status === 0));
console.log(status0);

获取 status 为 1 的集合

const status1 = data.filter(item => item.age.some(a => a.status === 1));
console.log(status1);

详细解释filter 方法:filter 方法会创建一个新的数组,包含所有在回调函数中返回 true 的元素。some 方法:some 方法会测试数组中的某些元素是否至少有一个元素通过了提供的函数测试。它返回一个布尔值。条件判断:在 filter 的回调函数中,我们使用 some 来检查 age 数组中的每个对象是否满足 status 的条件。

如果:想要在数组中筛选出 age 中包含 status 为 0 或 1 的对象集合,并且每个对象的 age 数组中可能包含多个元素。

可以考虑对 age 数组中的每个元素进行进一步的筛选。

const data = [
  { "id": 1, "name": "Alice", age: [{ id: 4, status: 0 }, { id: 5, status: 1 }] },
  { "id": 2, "name": "Bob", age: [{ id: 4, status: 1 }, { id: 5, status: 2 }] },
  { "id": 3, "name": "Charlie", age: [{ id: 4, status: 1 }, { id: 5, status: 3 }] }
];

// 获取 status 为 0 的集合
const status0 = data.map(item => ({
  ...item,
  age: item.age.filter(a => a.status === 0)
})).filter(item => item.age.length > 0);

console.log(status0);

// 获取 status 为 1 的集合
const status1 = data.map(item => ({
  ...item,
  age: item.age.filter(a => a.status === 1)
})).filter(item => item.age.length > 0);

console.log(status1);

这样的方法可以确保只返回 age 中包含 status 为 0 或 1 的元素,并且如果 age 列表中没有符合条件的元素,该对象将不会包含在最终的结果中。

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容