我有一个表格数组:
groupTable: {
data: {
head: ['name', 'user', 'date'],
body: [{
name: 'Group 1',
user: 'User 3',
date: '17/10/03'
}, {
name: 'Group 2',
user: 'User 2',
date: '16/10/01'
}]
}
}
我希望能够过滤groupTable.data.body
内的对象。我这样做了:
// let's say the term is "7"
const result = this.groupTable.data.body.filter(field => {
return Object.values(field).every(value => {
return value.indexOf(term) > -1
});
});
console.log(result)
在这种情况下,console.log(result)
应该返回(如果term
= "7"
):
[{
name: 'Group 1',
user: 'User 3',
date: '17/10/03'
}]
然而,我得到一个空数组。这是为什么以及如何解决它?
答案 0 :(得分:1)
正如我上面提到的,不要使用“.every”,因为这意味着它需要所有字段的值来满足该标准。而是使用“.some”。这样,对于任何具有您声明的“术语”的字段,它将返回“true”。如果您只是说出来,Javascript函数是真的可读:“我想过滤数据,其中某些值包含提供的术语”。我认为这不是你想要的:“我想过滤掉每个值包含所提供术语的数据”
// let's say the term is "7"
const result = this.groupTable.data.body.filter(field => {
return Object.values(field).some(value => {
return value.indexOf(term) > -1
});
});
console.log(result)