0

我正在尝试过滤一组对象。但是要过滤的对象的属性在其他地方定义为变量,而不是 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"}
]

我有一个变量,指定要过滤的对象的哪些属性。此变量并不总是设置为名称。在上面的示例中,它可以在 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

提前致谢

4

1 回答 1

9

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

var idKey = "name";
$.grep(listings, function (obj) {
    return obj[idKey] === filterVal;
});
于 2012-08-16T13:12:19.243 回答