Javascript 一次过滤对象中的多个字段Vue.js

Javascript 一次过滤对象中的多个字段Vue.js,javascript,vue.js,Javascript,Vue.js,我试图显示一个用户列表,如果它的任何字段包含输入字段的文本。如果我在filteredList()函数中删除for循环,并选择手动选择它所选的对象,我就可以实现这一点 (例如:返回user.username.toLowerCase().includes(searchinput.toLowerCase());) 但我不想一遍又一遍地写这些,以防以后字段被删除或添加 现在我越来越紧张 “vue.js:634[vue warn]:呈现时出错:“TypeError:无法读取未定义的属性“0”,但我不确定是

我试图显示一个用户列表,如果它的任何字段包含输入字段的文本。如果我在filteredList()函数中删除for循环,并选择手动选择它所选的对象,我就可以实现这一点

(例如:
返回user.username.toLowerCase().includes(searchinput.toLowerCase());)

但我不想一遍又一遍地写这些,以防以后字段被删除或添加

现在我越来越紧张 “vue.js:634[vue warn]:呈现时出错:“TypeError:无法读取未定义的属性“0”,但我不确定是什么导致了此错误。有人能解释一下为什么会发生这种情况吗?有没有比在自己的数组中检查字段更好的方法使其更具动态性


我把代码放进一个代码笔-

你想要的
用户[shownFields[I]]
不是
用户。shownFields[I]
是因为
用户
没有名为
shownFields
的属性

您还需要更改什么
i
return this.items.filter(function(theuser) {
    for(var i = 0; i < shownFields.length; i++) { // change here
       if(theuser[shownFields[i]].toLowerCase().includes(searchinput.toLowerCase())) { // change here
           return theuser[shownFields[i]].toLowerCase().includes(searchinput.toLowerCase()); // change here
       }
    }
});