如何过滤所有反应中的字段? 我编写了一个只过滤指定字段的代码。
let filteredContacts=this.props.contacts.filter(
(contact)=>{
return contact.name.indexOf(this.state.search)!==-1;
}
);
上面的代码只返回过滤后的名称...但我想过滤名称,年龄,城市工作。
这是数据文件:
export default function(){
return [{
key: 1,
name: 'Steve',
city: 'Paris',
}, {
key: 2,
name: 'Tim',
city: 'London',
}, {
key: 3,
name: 'Stella',
city: 'Bankok',
}, {
key: 4,
name: 'John',
city: 'Paris',
}];
}
我想创建一个搜索栏,其中筛选所有字段,如果我搜索john,则应显示john列表,如果我搜索paris,则应显示所有具有paris的条目。所以代码哪个我只写了名字的搜索,因为我指定了名称..我想搜索输入的数据来搜索所有字段。
答案 0 :(得分:0)
嗯,我快速尝试,在你的钥匙上做一个循环。也许有一种更优雅的方式。
let filteredContacts=this.props.contacts.filter(
(contact)=>{
var found = false;
Object.keys(contact).map(function(key, index) {
if (contact[key].indexOf(this.state.search) >= 0)
found = true;
}
return found;
}
);
答案 1 :(得分:0)
过滤条件可以是indexOf
上的Object.values()
,如下所示,但它只会提供完整匹配
var data = [{
key: 1,
name: 'Steve',
city: 'Paris',
}, {
key: 2,
name: 'Tim',
city: 'London',
}, {
key: 3,
name: 'Stella',
city: 'Bankok',
}, {
key: 4,
name: 'John',
city: 'Paris',
}];
var value = 'Paris'
var newData = data.filter((obj) => {
return Object.values(obj).indexOf(value) > -1
})
console.log(newData)