迭代地拼接多个数组

时间:2013-03-06 20:23:49

标签: javascript arrays splice

在进行迭代拼接多个数组的最快方法是什么 - 没有太多的性能影响?我想它类似于下面的语法,但它不太有用。

我想这样做:Array1 - remove[0],Array2 - remove[1],Array3 - remove[2] ......依此类推......

for (var i = 0; i < items.length; i++) {
    arr[i] = items.name;
    for(key in arr[i]) {
        var value = arr[i].splice(i, 1);
        console.log(value);
    }
}

enter image description here

EDIT(项目定义):

enter image description here

所需结果(分别删除了第3个,第2个,第3个项目的3个数组:

[array0]
  [0] United Kingdom
  [1] United States

[array1]
  [0] Canada 
  [1] United States

[array2]
  [0] Canada
  [1] United Kingdom

EDIT2 - 如果你看下面的比较,你可以看看我们是否使用for循环将传入的数组推入组,结果与Corey提供的解决方案相同,但是如果我们在两者上运行splice方法其中 - 结果非常不同,示例2正在拼接正确 - 示例1完全被拼接,这就是我感到困惑的地方:

(项目的形式为:)

["Canada", "United Kingdom", "United States"] 
["Canada", "United Kingdom", "United States"] 
["Canada", "United Kingdom", "United States"] 


var group = [];

for (var i = 0; i < items.length; i++) {
    group.push(items.name);
}

/*for (var i = 0; i < group.length; i++) {
   group[i].splice(i, 1);
}*/

console.log(group);

var arr1 = ["One", "Two", "Three"];
var arr2 = ["One", "Two", "Three"];
var arr3 = ["One", "Two", "Three"];

var test = [arr1, arr2, arr3];

/*for (var i = 0; i < test.length; i++) {
   test[i].splice(i, 1);
}*/

console.log(test);      

2 个答案:

答案 0 :(得分:1)

如果你的所有数组都在另一个“分组”数组中,你可以遍历该组并使用索引作为你的拼接计数器。类似的东西:

var arr1 = ["One", "Two", "Three"];
var arr2 = ["One", "Two", "Three"];
var arr3 = ["One", "Two", "Three"];

var group = [arr1, arr2, arr3];

for (var i = 0; i<group.length; i++) {
   group[i].splice(i,1);
}

console.log(group);
// Logs: ["Two", "Three"], ["One", "Three"], ["One", "Two"]

答案 1 :(得分:0)

如果您不介意使用第三方库,最简单的方法是使用Underscore.js。我不清楚你是否想要选择性拼接,或者你只是想创建一个与其他数组结合的数组,或者是唯一值,或者是什么。但他们有所有这些事情的操作:

http://underscorejs.org/#union

如果你不想把它们带进来,那么只需看看它的来源,看看它们是如何做到的。