⚠️注意
every 不检测空数组!但是会返回true
every 不会改变原始数组元素!
对于空数组返回true的解释:
every 和数学中的全称量词"任意(∀)"类似。因此,在先行条件不成立的情况下,结论返回为真。所以特别的,对于空数组,它只返回 true。 (这种情况属于无条件正确,因为空集的所有元素都符合给定的条件。)
这个函数的提供非常适用于多条件判断是否同时成立的情况。
比如,当对一个对象数组进行搜索筛选filter的时候,我们需要满足search1、search2、search3等等条件的值。
这时候我们可以将多个条件集合在一个对象中,并且字段key名和目标搜索数组的key一致。
let seachValueList= {
search1:searchvalue1,
search2:searchvalue2,
....
}
这样就可以利用every方法,而不用写一个长长的 if 语句了,并且可以动态扩展搜索条件。
console.log('search', searchValueList)
// -- tableFilterData:获取条件筛选后的数据;tableData原表格数据
tableFilterData = tableData.filter((item) => {
// 条件搜索的所有key都every check一下
// 先用Objec.keys将字段key转为数组
return Object.keys(searchValueList).every((key) => {
// includes代表使用模糊搜索
return item[key].includes(searchValueList[key])
})
})
console.log('筛选出来的data', this.tableFilterData)