过滤JSON对象的结果

时间:2014-02-21 15:24:32

标签: javascript jquery json object

var employees = {
"staff": [
  {"name": "Bob", "gender": "Male"},
  {"name": "Sue", "gender": "Female"},
  {"name": "Eric", "gender": "Male"},
  {"name": "Jo", "gender": "Female"}    
  ]
}

在迭代这个json结构之后,有没有一种方法可以根据性别选择有选择地删除整行?理想情况下,我想要一个新的对象,但没有任何男性,例如。

3 个答案:

答案 0 :(得分:5)

.filter()功能:

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

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

答案 1 :(得分:2)

使用$.grep() - 由于Array.filter()

而未使用IE < 9 support
var females = $.grep(employees.staff, function (obj) {
    console.log(this, arguments)
    return obj.gender == "Female"
})
console.log(females)

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

一起使用

答案 2 :(得分:0)

employees.staff = filter(employees.staff, "Female");

function filter(data, filter) {
    return data.filter(function(row) {
        return row.gender === filter;
    });
}