题目描述
输入
[1, 2, 3, 4], 'z', 2
输出
[1, 2, 'z', 3, 4]
第一种:: 运用splice的第二个蚕食为0去添加元素的特性
function insert(arr, item, index) {
var m = arr.slice(); //也可以arr.concat()
m.splice(index,0,item);
return m;
}
第二种::浅拷贝到index的位置(不包括index)然后concat连接参数和数组
function insert(arr, item, index) {
return arr.slice(0,index).concat(item,arr.slice(index));
}
第三种::类似于第二种先浅拷贝到index(不包括index),然后提取后边的然后进行合并。这里用到apply
function insert(arr, item, index) {
var m = arr.slice(0,index);
m.push(item);
var n = arr.slice(index,arr.length);
[].push.apply(m,n);
return m;
}
第四种::循环判断到index后push进item元素后继续,但是这里运用continue和apply()进行操作
function insert(arr, item, index) {
var m = [];
for (var i = 0; i < arr.length; i++) {
if(i === index){
var n = [item,arr[i]];
[].push.apply(m,n);
continue;
}
m.push(arr[i]);
}
return m;
}
第五种::类似第四种循环push进新数组
function insert(arr, item, index) {
var m = [];
for (var i = 0; i < arr.length; i++) {
if(i === index){
m.push(item);
}
m.push(arr[i]);
}
return m;
}