遍历对象数组中的每个 属性
Loop through every property in Arrray of Objects
我有类似于此结构的对象数组:
array = [
{name: "Alex", content: "Lorem"},
{name: "Bob", content: "Lorem"}
...
]
此数组映射到 html table。我正在尝试构建搜索方法,它将比较对象的每个 属性 和 return 这些,其中包含我正在寻找的单词。我已经构建了方法,正在运行。
if(search_word){
licenses = licenses.filter((item) => {
if(item.name.toLowerCase().indexOf(search_word.toLowerCase()) !== -1){
return item;
}
})
}
工作正常,但我需要一一指定每个对象 属性 的名称。我想要一些更通用的东西,它将遍历所有属性名称。我已经尝试过方法:
for(let property in item)
但对我不起作用。你能给些建议吗?啊,我想避开jQuery.
干杯,
丹尼尔
你为什么不把完整的对象字符串化
if(search_word){
licenses = licenses.filter((item) => {
if(JSON.stringify(item).toLowerCase().indexOf(search_word.toLowerCase()) !== -1){
return item;
}
})
}
如果您的对象很大,将节省时间,而且这样您就不需要检查所有属性。
它会遗漏的一件事是,如果有人搜索 name
或 content
,那么所有内容都会出现。
您可以像这样使用 some
和 Object.keys
:
if(search_word){
let l_search_word = search_word.toLowerCase();
licenses = licenses.filter( item =>
Object.keys(item).some( key =>
item[key].toLowerCase().indexOf(l_search_word) !== -1
)
)
}
代替indexOf
,您还可以使用includes
:
item[key].toLowerCase().includes(l_search_word)
我有类似于此结构的对象数组:
array = [
{name: "Alex", content: "Lorem"},
{name: "Bob", content: "Lorem"}
...
]
此数组映射到 html table。我正在尝试构建搜索方法,它将比较对象的每个 属性 和 return 这些,其中包含我正在寻找的单词。我已经构建了方法,正在运行。
if(search_word){
licenses = licenses.filter((item) => {
if(item.name.toLowerCase().indexOf(search_word.toLowerCase()) !== -1){
return item;
}
})
}
工作正常,但我需要一一指定每个对象 属性 的名称。我想要一些更通用的东西,它将遍历所有属性名称。我已经尝试过方法:
for(let property in item)
但对我不起作用。你能给些建议吗?啊,我想避开jQuery.
干杯, 丹尼尔
你为什么不把完整的对象字符串化
if(search_word){
licenses = licenses.filter((item) => {
if(JSON.stringify(item).toLowerCase().indexOf(search_word.toLowerCase()) !== -1){
return item;
}
})
}
如果您的对象很大,将节省时间,而且这样您就不需要检查所有属性。
它会遗漏的一件事是,如果有人搜索 name
或 content
,那么所有内容都会出现。
您可以像这样使用 some
和 Object.keys
:
if(search_word){
let l_search_word = search_word.toLowerCase();
licenses = licenses.filter( item =>
Object.keys(item).some( key =>
item[key].toLowerCase().indexOf(l_search_word) !== -1
)
)
}
代替indexOf
,您还可以使用includes
:
item[key].toLowerCase().includes(l_search_word)