所以我有这个问题。
我有一个包含3个数组的对象...
items = {
a: ['STRAWBERRY', 'PEANUT'],
b: ['John', 'Doe', 'Scarface'],
c: ['Circle', 'Square', 'Triangle', 'Rectangle'],
}
我需要以下输出:
[
'STRAWBERRY',
'John',
'Circle',
'PEANUT',
'Doe',
'Square',
'Scarface',
'Triangle',
'Rectangle'
]
请注意,“项目”对象的每个阵列的每个值之间的输出交织
我试图找出一种实现这种“合并”的好方法,但我只能想到带有大量代码和大量代码的大型方法。
有没有一种快速且优化的方法来做到这一点?
附注:我可以使用任何框架。
编辑
使用@evillive答案,我能够适应我在Coffee Script中的代码
使用咖啡脚本的解决方案
result = []
col = -1
loop
col++
run = false
for k of Items
Items[k][col] and (run = result.push(Items[k][col]))
unless run
break
console.log result
最佳答案
无需查找最大长度参数。
var result = [];
while(Object.getOwnPropertyNames(items).length){
for(var k in items){
result.push(items[k].shift());
if (items[k].length == 0) delete items[k];
}
}
更新:
不幸的是,
shift
和delete
指令使以前的代码在性能上不足。所以我重写了它以使其更快。var result = [], col = -1, run;
do {
col++; run = false;
for(var k in items){
items[k][col] && (run = result.push(items[k][col]))
}
} while(run)