gpt4 book ai didi

javascript - 我如何降低这段代码的时间复杂度

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:29:23 30 4
gpt4 key购买 nike

let arr = [[{x: 1},{y: 2}],[{z: 3}]]

let objs = []
arr.forEach(innerArray => {
innerArray.forEach(obj => {
objs.push(obj)
})
})

console.log(objs) // [{x:1}, {y:2},{z:3}]

我不想映射数组两次,你能帮我找到更好的方法吗?

最佳答案

你可以使用Array.prototype.flat()

注意:以下所有方法都只是替代方法,速度会很快。您的解决方案具有 O(n) 时间复杂度,下面的所有方法都具有相同的时间复杂度。合并两个数组的时间复杂度是 O(n) 而不是 O(1)

let arr = [[{x: 1},{y: 2}],[{z: 3}]]
let objs = arr.flat();
console.log(objs)

或者另一种方法是使用 concat()reduce()

let arr = [[{x: 1},{y: 2}],[{z: 3}]]
let objs = arr.reduce((ac,a) => ac.concat(a),[])
console.log(objs)

评论中建议的一个更好的想法是使用 apply()

let arr = [[{x: 1},{y: 2}],[{z: 3}]]
let objs = [].concat.apply([], arr)
console.log(objs)

关于javascript - 我如何降低这段代码的时间复杂度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56039499/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com