将Array插入(拼接?)到另一个Array而不应用

时间:2014-05-28 03:58:12

标签: javascript arrays

假设我们在JavaScript中有两个数组,[3,4,7][5,6]

如果没有排序或使用.apply,在{2}中将[5,6]插入[3,4,7]以获得结果数组的最佳方式是什么:[3,4,5,6,7]

3 个答案:

答案 0 :(得分:1)

function splice(arrayOne, arrayTwo, index) {
     var result = [];

     for (var i = 0; i < arrayOne.length; i++) {
         if (i == index) {
             result = result.concat(arrayTwo);
         }

        result.push(arrayOne[i]);
     }

     return result;         
}

答案 1 :(得分:1)

不知道你是如何定义“最佳方式”的,但你可以这样做:

a.slice(0,2).concat(b,a.slice(2));

除非你说你真的想改变a数组,否则你可以这样做:

var c = a.splice(2);

for (var i = 0; i < b.length + c.length; i++) {
    a.push(i < b.length ? b[i] : c[i-b.length]);
}

.splice()将数组拆分为两部分的这种行为可能会在较旧的IE中出现需要修补的问题。


或者这可能会更好:

var c = b.concat(a.splice(2));

for (var i = 0; i < c.length; i++) {
    a.push(c[i]);
}

关于.splice()的同样警告。

答案 2 :(得分:0)

不确定为什么你不想使用本机方法,但这里只是一个非常天真的解决方案:

function doInsert(index, items, arr) {
    var insertLen = items.length,
        current;

    for (i = 0; i < insertLen; ++i) {
        current = i + index;
        arr[current + insertLen - 1] = arr[current];
        arr[current] = items[i];
    }
}

var arr = [3, 4, 7];
doInsert(2, [5, 6], arr);
console.log(arr);
相关问题