我使用看起来像这样的函数过滤对象数组
var val = 'some text value'
this.someList = this.someList.filter(containsQuery);
function containsQuery(listItem) {
return listItem.Key_One.toLowerCase().indexOf(val) > -1 ||
listItem.Key_Two.toLowerCase().indexOf(val) > -1 ||
listItem.Key_Three.toLowerCase().indexOf(val) > -1
}
我的问题是什么是对每个列表项键值进行过滤的更好方法,而不必为每个键值写一个新行?即所以我可以避免去
listItem.Key_Four.toLowerCase().indexOf(val) > -1
listItem.Key_Five.toLowerCase().indexOf(val) > -1
等。
任何建议都会很棒。
谢谢!
答案 0 :(得分:3)
您可以将对象的获取键与Object.keys
一起使用,并使用Array#some
进行迭代。
function containsQuery(listItem) {
return Object.keys(listItem).some(function (k) {
return listItem[k].toLowerCase().indexOf(val) > -1;
});
}
答案 1 :(得分:2)
只是一个建议,包含所有键的数组并循环它们?
像
var keys = ['key_one', 'key_two', 'key_three', 'key_four'];
for (i=0; i<keys.length; i++){
if (listItem[keys[i]].toLowerCase().indexOf(val) > -1) return true;
}
return false;
啊,该死的,和上面的想法一样,写了太久了:D