使用jquery grep过滤对象数组,但条件是变量

时间:2012-08-16 13:10:01

标签: javascript jquery object

我正在尝试过滤掉一系列对象。但是要过滤的对象的属性在别处被定义为变量,而不是100%如何构造点符号语法。

所以我有一个这样的数组对象

var listings = [
    {"id" : "1", "name":"a name", "surname" : "a surname"},
    {"id" : "2", "name":"b name", "surname" : "b surname"},
    {"id" : "3", "name":"c name", "surname" : "c surname"}
]

我有一个变量指定要过滤的对象的属性。此变量并不总是设置为name。在上面的示例中,它可以是id,name或surname。

var filter = 'id'

要查找的过滤器val的var

var filterVal = '2'

然后我有这个grep电话。

listings = $.grep(listings, function (obj, index) {
return  obj.id === filterVal;
});

但是我没有使用obj.id硬编码,而是想要像:

obj."value of filter variable" === filterVal

提前致谢

1 个答案:

答案 0 :(得分:9)

您可以使用方括号表示法而不是点符号。

var idKey = "name";
$.grep(listings, function (obj) {
    return obj[idKey] === filterVal;
});