如何使用Underscore过滤json数据

时间:2014-07-23 09:48:10

标签: javascript underscore.js

我是Underscore的新手。我有一个粘贴在下面的json数组。如果我想根据具有“是”值的developed字段过滤以下数组。如何使用Underscore.js。目前我正在迭代数组的内容并手动选择对象并填入另一个数组。有没有更好的方法来使用Underscore?

  {
    "content": [
    {
      "stateName": "Karnataka",
      "population": 1000000,
      "developed": "yes"
    },
    {
      "stateName": "Kerala",
      "population": 1000000,
      "developed": "yes"
    },
    {
      "stateName": "Tamilnadu",
      "population": 1023213213213,
      "developd": "yes"
    },
    {
      "stateName": "Bsadasd",
      "population": 1023213213213,
      "developed": "no"
    }
  ]
}

3 个答案:

答案 0 :(得分:2)

我不确定此处是否遗漏了一些内容,但显而易见的下划线功能是filter

var developedStates = _.filter(data.content, function(state){
    return state.developed == 'yes';
});

答案 1 :(得分:2)

您可以使用_.where

在其属性上过滤数组
  

其中 _.where(列表,属性)

     

查看列表中的每个值,返回包含所有值的所有值的数组   属性中列出的键值对。

导致

var filtered = _.where(data.content, {developed: "yes"});

和演示http://jsfiddle.net/nikoshr/NExZC/

答案 2 :(得分:0)

据我所知,下划线无法帮助您完成此任务。您可以在不使用名为select的原生Javascript方法的下划线的情况下执行此操作:

var filteredArray = originalArray.select(function(item, index) {
    return item.developed == "yes"; // Include this item if it has a proper value
}); 

请注意,select方法仅适用于支持EcmaScript 5规范的浏览器,因此对于旧版浏览器,您需要一些支持库,如es5-shim