[英]How do i reduce time complexity of this code
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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.