- 假设有500万条数据,需要从这些数据中,筛选出符合条件的数据
第一个,每次符合条件的就push到一个新数组
let arr = [] for(let i = 0;i< 5000000;i++){ if(条件满足){ arr.push(xxx); } }
- 第二个,先申请一个数组 Array(length).fill(null) , 然后再使用for循环,把符合条件的数据直接赋值
let cacheArr = Array(5000000).fill(null)
for(let i = 0;i< 5000000;i++){
if(条件满足){
cacheArr[i] = xxx;
}
}
问题:
- 这两种哪种更好?
- 每次push的时候,会不会涉及到重新申请新数组和数据拷贝,导致浪费性能?
直接push就行了。因为你不是直接操作内存,所以并不存在申请内存空间这种事情。你的预申请对于JS来说等于
var a = null; a = 5;
所以还不如直接var a = 5;
。