繁体   English   中英

如何在JavaScript数组操作中提高嵌套循环的性能?

[英]How to improve performance of nested loops in javascript array manipulation?

我进行了编码挑战,要求仅通过添加重复元素一次并保持数组元素的顺序,将数组的输入合并到新数组中。 我的解决方案如下:

function union(arr){
 let newArr = [];
 let length = arr.length;
 for(let i=0; i< length; i++){
   for(let j=0; j<arr[i].length; j++){
   if(!newArr.includes(arr[i][j])){
     newArr.push(arr[i][j]);
   }
  }
 }
 return newArr;

我想知道如何在不使用任何JavaScript内置方法(如reduce或map等)的情况下提高上述解决方案的O性能。是否有一种不使用嵌套循环的方法?

如果允许,我建议将所有数组添加到Set (重复的项目将被忽略),然后将Set变回数组:

 function union(input){ const set = new Set(input.flat()); return [...set]; } console.log(union([[2, 3], [3, 4]])); 

如果计算复杂性是一个问题,通常最好使用集合而不是数组Array.prototype.includesO(N) ,而Set.prototype.hasO(1)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM