假设我们在JavaScript中有两个数组,[3,4,7]
和[5,6]
。
如果没有排序或使用.apply,在{2}中将[5,6]
插入[3,4,7]
以获得结果数组的最佳方式是什么:[3,4,5,6,7]
?
答案 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);