【发布时间】:2016-09-06 22:30:32
【问题描述】:
对于这样的结构
var arr = [];
arr[0] = {};
arr[0].p1 = [];
arr[0].p1[0] = 'hola arr0 p1';
arr[0].p2 = [];
arr[0].p2[0] = 'hola arr0 p2';
arr[1] = {};
arr[1].p1 = [];
arr[1].p1[0] = 'hola arr1 p1';
arr[1].p2 = [];
arr[1].p2[0] = 'hola arr1 p2';
arr[2] = {};
arr[2].p1 = [];
arr[2].p1[0] = 'hola arr2 p1';
arr[2].p3 = [];
arr[2].p3[0] = 'hola arr2 p3';
arr[3] = {};
arr[3].p2 = [];
arr[3].p2[0] = 'hola arr3 p2';
arr[3].p3 = [];
arr[3].p3[0] = 'hola arr3 p3';
arr[4] = {};
arr[4].p1 = [];
arr[4].p1[0] = 'hola arr4 p1';
arr[4].p4 = [];
arr[4].p4[0] = 'hola arr4 p4';
我想合并对象,以便最后将所有信息浓缩在一个对象中。 此代码有效:
for (let a=1;a<arr.length; a++){
for (let i in arr[0]) {
for (let j in arr[a]) {
if (i === j) {
arr[0][i][a] = arr[a][j][0];
delete arr[a][j];
}
}
}
for (let j in arr[a]) {
arr[0][j] = [];
arr[0][j][a] = arr[a][j][0];
delete arr[a][j];
}
}
console.log(arr)
我得到了我想要的输出。
https://jsfiddle.net/jb73tur4/
问题是在我的真实代码中 arr[0] 有 1500 个键,而 arr[1] 有 1300 个键。循环遍历这两个意味着 1500x1300 次迭代,这会冻结浏览器。
有没有办法做到这一点?以某种方式加速?
【问题讨论】:
标签: arrays performance loops for-loop javascript-objects