我正在尝试根据 search
变量(字符串)过滤下面的对象数组。因此,用户可以根据头衔、年份或人名进行搜索
array = [{
"title": "Test",
"year": 2018,
"people": [
{
"name": "person1"
},
{
"name": "person2"
}],
},
{
"title": "Test2",
"year": 2018,
"people": [
{
"name": "person3"
},
{
"name": "person4"
},
{
"name": "person5"
}],
},...]
我编写了以下函数,该函数适用于title和year,但我不知道如何搜索内部的people数组功能。我知道如何在没有 ES6 的情况下做到这一点,但我更喜欢 ES6,它仍然让我感到困惑:
filteredArray() {
let search = this.search.toLowerCase();
return this.array.filter(function (item) {
return Object.values(item).some(val =>
String(val).toLowerCase().includes(search));
})
},
this.search
是保存用户输入值的 v-model
。
这是Codepen
感谢您的帮助:)
最佳答案
以下代码对您的用例有帮助
var searchString = 'person5';
let result = array.filter(ele =>
ele.title.includes(searchString)
|| `${ele.year}`.includes(searchString)
|| ele.people.some(pele => pele.name.includes(searchString))
)
console.log(JSON.stringify(result));
关于javascript - 根据对象值过滤嵌套的对象数组Javascript ES6,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58015872/