当前位置: 首页 > 知识库问答 >
问题:

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

须新
2024-06-04
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的就是获取另外两个集合

共有3个答案

颜瀚漠
2024-06-04
function filterData(data, status){    return data.filter(item => item.age.some(citem => citem.status === status))}filterData(data, 0)

意思是只保留对应status的数据,可以用下面的代码

function filterData(data, status){  return data.reduce((arr, item) => {      let age = item.age.filter(citem => citem.status === 0)      if(age.length){arr.push({...item, age})}      return arr  }, [])}
荆煌
2024-06-04

要获取 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 列表中没有符合条件的元素,该对象将不会包含在最终的结果中。

哈朗
2024-06-04

要获取JSON中指定的集合,你可以使用数组的filter方法,结合对象内部的属性检查。以下是如何获取status为0或1的集合的示例:

获取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 statusZeroItems = data.filter(item => item.age[0].status === 0);console.log(statusZeroItems);

获取status为1的集合:

const statusOneItems = data.filter(item => item.age[0].status === 1);console.log(statusOneItems);

在上述代码中,filter方法遍历data数组的每个元素,并且对于每个元素,它检查age数组的第一个对象的status属性是否等于指定的值(0或1)。如果等于,则这个元素会被包含在新数组中。

请注意,这段代码假设每个对象的age数组至少有一个元素,并且你想要检查的是age数组的第一个元素的status属性。如果age数组可能为空或者你想要检查其他位置的元素,你需要相应地调整代码。

结果会以数组形式返回,包含所有满足条件的对象。如果你只需要第一个匹配的集合,可以使用find方法替代filter

 类似资料:
  • 问题内容: 此URL返回JSON: 我尝试了一下,但没有成功: 如何从该URL的JSON响应中获取JavaScript对象? 问题答案: 您可以使用jQuery 函数:

  • cell-group是一个标题的class,想用函数过滤span里的文本 在vue里怎样获取全部的cell-group(不同的组件)dom,并修改dom里的值

  • 问题内容: 我的脚本当前如下所示: 日期“ x”和事件“ x”是一系列html标签。页面加载(onload)时运行此功能。我的目标是仅从本地.json文件而不是上面获得的硬代码执行同一操作。我已经签出了http://api.jquery.com/jQuery.getJSON/。 本地.json文件如下所示: 有什么建议? 问题答案: 假设您说.json文件的意思是“本地文件系统上的文件”。 您需要

  • 问题内容: 说我有一个对象: 我想用其属性的子集创建一个新对象。 我该如何实现? 问题答案: 使用对象分解和属性速记 来自Philipp Kewisch: 这实际上只是一个即时调用的匿名函数。所有这些都可以在MDN 的“ 解构分配”页面上找到。这是扩展形式

  • 本文向大家介绍如何获取JavaScript对象属性的子集?,包括了如何获取JavaScript对象属性的子集?的使用技巧和注意事项,需要的朋友参考一下 假设以下是我们的对象- 以下是仅获取子集的代码- 示例 要运行以上程序,您需要使用以下命令- 在这里,我的文件名为demo120.js。 输出结果 这将产生以下输出-

  • 说我有对象: 我想用它的属性的子集来制作一个新的对象。 我怎样才能做到这一点?