请问,对于大数据量数组的操作,push和先申请内存谁更耗性能

  1. 假设有500万条数据,需要从这些数据中,筛选出符合条件的数据
  2. 第一个,每次符合条件的就push到一个新数组

    let arr = []
    for(let i = 0;i< 5000000;i++){
     if(条件满足){
         arr.push(xxx);
     }
    }
  3. 第二个,先申请一个数组 Array(length).fill(null) , 然后再使用for循环,把符合条件的数据直接赋值
let cacheArr = Array(5000000).fill(null)
for(let i = 0;i< 5000000;i++){
    if(条件满足){
        cacheArr[i] = xxx;
    }
}

问题:

  1. 这两种哪种更好?
  2. 每次push的时候,会不会涉及到重新申请新数组和数据拷贝,导致浪费性能?
阅读 1.5k
2 个回答

直接push就行了。因为你不是直接操作内存,所以并不存在申请内存空间这种事情。你的预申请对于JS来说等于var a = null; a = 5;所以还不如直接var a = 5;

如果你的判断99.999%都是true, 自然是A好, 但是如果准确率这么高, 反过来把错误的找出来应该也能满足需求吧.

否则肯定是b好.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题