【发布时间】:2019-01-03 05:20:55
【问题描述】:
我做了一个编码挑战,需要通过只添加一次重复的元素并保持数组元素的顺序来将数组的输入合并到一个新数组中。我的解决方案如下:
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 性能。有没有不使用嵌套循环的方法?
【问题讨论】:
-
第一个使用数组 flat 方法的 flat,然后从 flatted 数组中创建一个 Set 来删除重复项。你已经完成了 O(n) 和两行代码
-
@quirimmo 你能详细说明扁平化数组吗?
标签: javascript arrays loops big-o