【问题标题】:How can I extract all the data from a JSON containing multiple arrays?如何从包含多个数组的 JSON 中提取所有数据?
【发布时间】:2020-07-13 14:28:03
【问题描述】:

如何在 JavaScript 中从这个 JSON 中提取所有数字?

[
  {
    "name": "list0",
    "list": [0,1,2,3,4]
  },
  {
    "name": "list1",
    "list": [3,4,5,6,7,8,9]
  }
]

我想要一套只有:

0,1,2,3,4,5,6,7,8,9

【问题讨论】:

标签: javascript json


【解决方案1】:

您可以尝试使用Set()

Set 对象允许您存储任何类型的唯一值,无论是原始值还是对象引用。

flatMap()

flatMap() 方法首先使用映射函数映射每个元素,然后将结果展平为新数组。它与 map() 后跟一个深度为 1 的 flat() 相同,但 flatMap() 通常非常有用,因为将两者合并到一个方法中会更有效。

var arr = [
  {
    "name": "list0",
    "list": [0,1,2,3,4]
  },
  {
    "name": "list1",
    "list": [3,4,5,6,7,8,9]
  }
]

var res = [... new Set(arr.flatMap(el => el.list))];
console.log(res);

【讨论】:

    【解决方案2】:

    您可以使用array.reduce 和扩展运算符:

    let input = [
      {
        "name": "list0",
        "list": [0,1,2,3,4]
      },
      {
        "name": "list1",
        "list": [3,4,5,6,7,8,9]
      }
    ];
    
    let numbers = input.reduce((acc,cur) => [...acc, ...cur.list], []);
    console.log(numbers);
    
    console.log(...new Set(numbers))

    【讨论】:

      【解决方案3】:

      您可以使用mapflat 遍历数组并将其转换为一级数组或flatmap 同时执行这两项操作,然后使用Set 进行重复数据删除

      array=[ { "name": "list0", "list": [0,1,2,3,4] }, { "name": "list1", "list": [3,4,5,6,7,8,9] } ]
      set=[...new Set(array.map(x=>x.list).flat())]
      console.log(set)

      使用flatmap()

      array=[ { "name": "list0", "list": [0,1,2,3,4] }, { "name": "list1", "list": [3,4,5,6,7,8,9] } ]
          set=[...new Set(array.flatMap(x=>x.list))]
          console.log(set)

      【讨论】:

        【解决方案4】:

        您可以使用展开...数组运算符来解决问题。

        let arr = [
          {
            "name": "list0",
            "list": [0,1,2,3,4]
          },
          {
            "name": "list1",
            "list": [3,4,5,6,7,8,9]
          }
        ] 
        
        let a = [];
        arr.forEach(obj=>{
            a.push(...obj.list)
        })
        
        const set = new Set([...a]);
        console.log(...set)

        【讨论】:

          猜你喜欢
          • 2021-11-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-10-09
          • 2018-09-16
          • 2020-10-14
          • 2021-09-25
          相关资源
          最近更新 更多