let array = [{ date: '2016-05-02', name: 'Ethan', status: 'success', total: '81' }, { date: '2016-05-04', name: 'Lynn', status: 'fail', tag: '50' }, { date: '2016-05-01', name: 'Kevin', status: 'success', tag: '20' } ]; let filterStatus = "success"; let filterNames = ['Lynn', 'Kevin']; let result = array.filter((a, i) => { return (a.status === filterStatus && filterNames.some(f => (f === a.name))) //filterNames.map-------------- // 0: // date: "2016-05-02" // name: "Ethan" // status: "success" // total: "81" // __proto__: Object // 1: // date: "2016-05-01" // name: "Kevin" // status: "success" // tag: "20" // map----- //filterNames.some ---weiyi // date: "2016-05-01" // name: "Kevin" // status: "success" // tag: "20"
方法2:
let keys = Object.keys(filters) let result = array.filter(item => { return keys.every(key => filters[key].indexOf(item[key]) !== -1) })