首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Node或ES6从JSON中过滤记录

使用Node或ES6从JSON中过滤记录
EN

Stack Overflow用户
提问于 2016-06-14 12:22:34
回答 4查看 5.6K关注 0票数 5

我不确定做这件事的最佳方式。例如,我想迭代我的json并找到所有在美国的公司。随着我的应用程序的增长,这个JSON可能会变得更加复杂,比如在级别、对象等方面。我只想知道人们如何使用JSONNode.js和/或ES6或库(如Lodash等)进行简单的搜索来过滤掉数据子集。

以这个json为例,我有什么方法可以搜索它,只检索那些在美国的公司?

代码语言:javascript
复制
[{
    "id": 0,
    "name": "Company1",
    "logoUrl": "/lib/assets/company1-logo.png",
    "location":{
      "country": "USA",
      "state": "California",
      "city": "Napa"
    },
    "active": false
  },
  {
    "id": 1,
    "name": "Company2",
    "logoUrl": "/lib/assets/company2-logo.png",
    "location":{
      "country": "Germany",
      "state": "",
      "city": "Berlin"
    },
    "active": false
  },
  {
    "id": 2,
    "name": "Company3",
    "logoUrl": "/lib/assets/company3-logo.png",
    "location":{
      "country": "USA",
      "state": "Michigan",
      "city": "Detroit"
    },
    "active": false
  }]
EN

回答 4

Stack Overflow用户

发布于 2016-06-14 12:29:11

将JavaScript原生方法与ES6 arrow function一起使用

代码语言:javascript
复制
var res = data.filter(v => v.location.country === 'USA');

代码语言:javascript
复制
var data = [{
  "id": 0,
  "name": "Company1",
  "logoUrl": "/lib/assets/company1-logo.png",
  "location": {
    "country": "USA",
    "state": "California",
    "city": "Napa"
  },
  "active": false
}, {
  "id": 1,
  "name": "Company2",
  "logoUrl": "/lib/assets/company2-logo.png",
  "location": {
    "country": "Germany",
    "state": "",
    "city": "Berlin"
  },
  "active": false
}, {
  "id": 2,
  "name": "Company3",
  "logoUrl": "/lib/assets/company3-logo.png",
  "location": {
    "country": "USA",
    "state": "Michigan",
    "city": "Detroit"
  },
  "active": false
}];

var res = data.filter(v => v.location.country === 'USA');

console.log(res);

票数 8
EN

Stack Overflow用户

发布于 2016-06-14 12:29:07

您可以使用JavaScript的简单.filter()方法返回满足过滤器的结果列表。假设你的数据是可变数据

ES5

代码语言:javascript
复制
data.filter(function(item) {
  return item.location.country === 'USA';
});

ES6 :在ES6中,您可以使用箭头函数

代码语言:javascript
复制
data.filter((item) => {
  return item.location.country === 'USA';
});

代码语言:javascript
复制
var data = [{
    "id": 0,
    "name": "Company1",
    "logoUrl": "/lib/assets/company1-logo.png",
    "location":{
      "country": "USA",
      "state": "California",
      "city": "Napa"
    },
    "active": false
  },
  {
    "id": 1,
    "name": "Company2",
    "logoUrl": "/lib/assets/company2-logo.png",
    "location":{
      "country": "Germany",
      "state": "",
      "city": "Berlin"
    },
    "active": false
  },
  {
    "id": 2,
    "name": "Company3",
    "logoUrl": "/lib/assets/company3-logo.png",
    "location":{
      "country": "USA",
      "state": "Michigan",
      "city": "Detroit"
    },
    "active": false
  }];

var res1 = data.filter(function(item) {
  return item.location.country === 'USA';
});

const res2 = data.filter((item) => {
  return item.location.country === 'USA';
});

console.log(res1);
console.log(res2);

票数 3
EN

Stack Overflow用户

发布于 2016-06-14 12:30:36

在罗达什,它将是

代码语言:javascript
复制
_.filter(data, function(item) {
  return item.location.country === 'USA';
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37802940

复制
相关文章

相似问题

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