较大的数组
对于较大的数组处理首先考虑两个问题,第一个要使用原生的for循环,即:
for(j = 0,len=arr.length; j < len; j++) {
}
缓存了数组长度后能够有效提高运行效率,同时原生的性能最好
附:
对于较大数组的遍历运行效率比较
第二个要注意的就是如果可以使用二分法,那么二分后会提高效率,举例说明
一个Vue的表单中存在带筛选的Boolean值A,那么在数据加载好之后我们可以在mounted()
周期中添加一个方法,将所有A===true
的放入数组中,其他的放入另外一个实现二分
快速筛选对象
可以使用ES6的filter方法,过滤掉不符合条件的元素,举例说明:
const origin = [
{
A: "joasdjfoijas",
B: "oasdjfojoadsjf",
},
{
A: "joasdjfoijaafdafasfs",
B: "oasdjfojoadsjfdasfasdf",
},
{
A: "111",
B: "Joe",
},
]
let result = origin.filter(function(value){
return value.A === "111"&&value.B === "Joe"
})
console.log(result)
通过Array的filter方法用回调的方式一次比较多个值是否匹配,避免多次遍历
利用filter
和map
组合可以大量过滤需要的元素并输出所需要的值,例如:
var arr = [{
gender: 'man',
name: 'john'
}, {
gender: 'woman',
name: 'mark'
}, {
gender: 'man',
name: 'jerry'
}]
// filter : 有条件的筛选,返回条件为true的数组
// 筛选出性别为男性的名字集合
var newArr = arr.filter(n => n.gender === 'man').map(item => {
return {
name: item.name
}
})
console.log('男性名字集合', newArr) // => [{name: 'john'}, {name: 'jerry'}]
// 作者:付出
// 链接:https://juejin.im/post/5a5f3eaf518825733201a6a7
避免了老式的for+continue,也提高了代码的可读性