首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用筛选器在JSON中读取条目以响应js?

如何使用筛选器在JSON中读取条目以响应js?
EN

Stack Overflow用户
提问于 2019-02-18 10:16:02
回答 3查看 683关注 0票数 1

我有下面的json。从下面的json中,我只想以数组的形式获得每个项的PartNumber。有谁能帮忙如何使用过滤器这样做呢?

下面是我的密码。在控制台日志中,只获取第一项的PartNumber

代码语言:javascript
复制
    state = {
        data: MYResult.Products || [],
        partNumbers: []
    };

   componentDidMount(){
      const allPartNumbers = this.state.data.filter(partnumbers =>  
      this.state.data.PartNumber);
      console.log(allPartNumbers)
   }

"Products": [
            {
            "PartNumber": "ALM-GN001",
            "ProductName": "GNSS Filter-LNA Front-End Module",
            "productline": "GPS/GNSS Wireless Amplifiers",
            "AV_47_Frequency_GHz": "1.575",
            "AV_47_NF": ""
            },
            {
            "PartNumber": "ALM-GP001",
            "ProductName": "GPS Filter-LNA-Filter Front-End Module",
            "productline": "GPS/GNSS Wireless Amplifiers",
            "AV_47_Frequency_GHz":"1.565 - 1.606",
            "AV_47_NF": ""
            },
            { 
            "PartNumber": "ALM-GA001",
            "ProductName": "High-Gain, Low-Current LNA with Variable Current and Shutdown Function",
            "productline": "GPS/GNSS Wireless Amplifiers",
            "AV_47_Frequency_GHz": "1.606",
            "AV_47_NF": "0.97"
            },
            {
            "PartNumber": "ALM-GN002",
            "ProductName": "GNSS LNA-Filter Front-End Module with Optional Differential Outputs",
            "productline": "GPS/GNSS Wireless Amplifiers",
            "AV_47_Frequency_GHz": "1.565",
            "AV_47_NF": "0.97"
            }
        ]
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-02-18 10:19:08

filter将创建一个新数组,其中包含从函数返回一个真实值的所有元素。您希望使用map代替,只需提取PartNumber属性即可。

示例

代码语言:javascript
复制
const products = [
  {
    PartNumber: "ALM-GN001",
    ProductName: "GNSS Filter-LNA Front-End Module",
    productline: "GPS/GNSS Wireless Amplifiers",
    AV_47_Frequency_GHz: "1.575",
    AV_47_NF: ""
  },
  {
    PartNumber: "ALM-GP001",
    ProductName: "GPS Filter-LNA-Filter Front-End Module",
    productline: "GPS/GNSS Wireless Amplifiers",
    AV_47_Frequency_GHz: "1.565 - 1.606",
    AV_47_NF: ""
  },
  {
    PartNumber: "ALM-GA001",
    ProductName:
      "High-Gain, Low-Current LNA with Variable Current and Shutdown Function",
    productline: "GPS/GNSS Wireless Amplifiers",
    AV_47_Frequency_GHz: "1.606",
    AV_47_NF: "0.97"
  },
  {
    PartNumber: "ALM-GN002",
    ProductName:
      "GNSS LNA-Filter Front-End Module with Optional Differential Outputs",
    productline: "GPS/GNSS Wireless Amplifiers",
    AV_47_Frequency_GHz: "1.565",
    AV_47_NF: "0.97"
  }
];

const result = products.map(product => product.PartNumber);

console.log(result);

票数 1
EN

Stack Overflow用户

发布于 2019-02-18 10:20:45

这不是过滤器操作。只需使用map而不是filter。(用map替换过滤器)

票数 0
EN

Stack Overflow用户

发布于 2019-02-18 10:34:38

Array.filter()用于创建一个具有元素/s的新数组,该元素/s满足filter(() => condition)方法上回调函数中的条件。

您可以按以下方式使用reduce:

代码语言:javascript
复制
const productsNumbers = products.reduce((accum, product) => {
  accum.push(product.PartNumber);
  return accum;
}, []);

在这种情况下,productsNumbers[]应该是这样的:“`productsNumbers = []

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54744908

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档