【问题标题】:Filtering results of JSON ObjectJSON对象的过滤结果
【发布时间】:2014-02-21 15:24:31
【问题描述】:
var employees = {
"staff": [
  {"name": "Bob", "gender": "Male"},
  {"name": "Sue", "gender": "Female"},
  {"name": "Eric", "gender": "Male"},
  {"name": "Jo", "gender": "Female"}    
  ]
}

遍历完这个json结构后,有没有办法根据性别选择选择性地删除一整行?例如,理想情况下,我希望有一个新对象,但没有任何男性。

【问题讨论】:

  • 仅供参考,您的问题与json无关。您可能已将上述对象检索为 json,但它不再是 json。这种区别可能会帮助您在未来找到类似问题的答案。

标签: javascript jquery json object


【解决方案1】:

还有.filter() 函数:

employees.staff = employees.staff.filter(function(e) { return e.gender !== "Male"; });

.filter() 方法可用于较新版本的 JavaScript(现代浏览器)中的数组。对于旧版浏览器,there is a polyfill available

【讨论】:

    【解决方案2】:

    使用$.grep() - 因为IE < 9 support而没有使用Array.filter()

    var females = $.grep(employees.staff, function (obj) {
        console.log(this, arguments)
        return obj.gender == "Female"
    })
    console.log(females)
    

    另一种解决方案是将Array.filter()pollyfill 一起使用

    【讨论】:

      【解决方案3】:
      employees.staff = filter(employees.staff, "Female");
      
      function filter(data, filter) {
          return data.filter(function(row) {
              return row.gender === filter;
          });
      }
      

      【讨论】:

        猜你喜欢
        • 2015-05-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多