我正在尝试过滤掉一系列对象。但是要过滤的对象的属性在别处被定义为变量,而不是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
提前致谢
本
答案 0 :(得分:9)
您可以使用方括号表示法而不是点符号。
var idKey = "name";
$.grep(listings, function (obj) {
return obj[idKey] === filterVal;
});