首页 > 试题广场 >

添加元素

[编程题]添加元素
  • 热度指数:102615 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
在数组 arr 的 index 处添加元素 item。不要直接修改数组 arr,结果返回新的数组
示例1

输入

[1, 2, 3, 4], 'z', 2

输出

[1, 2, 'z', 3, 4]
推荐

本题可使用splice方法,该方法可接收多个参数。第一个参数表示数组起始位置,第二个参数表示需要删除元素的个数,如果后面还有参数,则将随后的全部参数插入到第一个参数表示的起始位置。例如:arr.splice(5,2,"test1","test2");此句代码表示从arr数组的第5个元素开始,删除随后两个元素,并将“test1”和“test2”插入到第5个元素之后。

function insert(arr, item, index) {
     //复制数组
     var a = arr.slice(0);
     a.splice(index, 0, item);
     return a;
 }

编辑于 2015-08-18 21:18:47 回复(30)
function insert(arr, item, index) {
    // 简单做法
    let newArr = []
    // 循环可以改成函数式编程(forEach、map...),也可以使用splice、Array.from进行拷贝
    for (let i = 0; i < arr.length; i++) {
        newArr[i] = arr[i]
    }
    newArr.splice(index, 0, item)
    return newArr
}

发表于 2021-08-28 22:27:43 回复(0)
function insert(arr, item, index) {
    var headArr = arr.slice(0,index),
        tailArr = arr.slice(index),
        resultArr = headArr.concat(item,tailArr);
    return resultArr;
    
}
发表于 2019-09-11 15:44:42 回复(1)
function insert(arr, item, index) {
    var newArr = arr.slice(0);//复制数组
    //参数1:开始添加点,参数2:删除数,参数3:添加内容
    newArr.splice(index,0,item);
    return newArr;
}


编辑于 2019-09-10 16:24:12 回复(0)
function insert(arr, item, index) {
    let newArray = [...arr]
    newArray.splice(index, 0, item);
    return newArray;
}

发表于 2019-09-09 14:13:38 回复(0)
function insert(arr, item, index) {
    var arr2 = [];
    arr.forEach(function(n,i){
        i===index && arr2.push(item)&& arr2.push(n);
        i!==index && arr2.push(n);
    });
    return arr2;
}
发表于 2018-03-14 01:24:16 回复(0)
function insert(arr, item, index) {
    var res=arr.slice();
    res.splice(index,0,item);
    return res;
}
发表于 2017-11-21 15:20:14 回复(0)
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;
}

兄弟们,顶我上去
发表于 2017-11-20 16:14:32 回复(0)
function insert(arr, item, index) {    var newarr = arr.slice();
    newarr.splice(index,0,item);
    return newarr;
}

编辑于 2017-10-31 22:40:07 回复(0)
function insert(arr, item, index) {
    var newarr=arr.slice(0);
    
    newarr.splice(index,0,item);
    
    return newarr;
}
发表于 2017-10-13 13:18:57 回复(0)
function insert(arr, item, index) {
    var newArr=[];
    for(var i=0;i<arr.length;i++){
        if(i==index){
            newArr.push(item);
        }
        newArr.push(arr[i]);
    }
    return newArr;
}
发表于 2017-08-14 13:05:09 回复(0)
slice()可以从已有的数组中返回选定的元素,可以接收两个参数,第一个为起始值,第二个为截止值,不给第二参数表示到最后一个元素。arr.slice(0)表示从第0个参数取到最后一个元素,是Javascript中复制数组的一种方式。
本题可使用splice方法,该方法可接收多个参数。第一个参数表示数组起始位置,第二个参数表示需要删除元素的个数,如果后面还有参数,则将随后的全部参数插入到第一个参数表示的起始位置。例如:arr.splice(5,2,"test1","test2");此句代码表示从arr数组的第5个元素开始,删除随后两个元素,并将“test1”和“test2”插入到第5个元素之后。
发表于 2017-08-14 09:52:59 回复(0)
function insert(arr, item, index) {
	var arr2 = arr.slice(0);
    arr2.splice(index,0,item);
    return arr2;
}

发表于 2017-08-05 17:19:12 回复(0)
function insert(arr, item, index) {
    return arr.slice(0,index).concat(item).concat(arr.slice(index));
}
用slice()和concat()配合也行,先取得arr数组中0到index处的元素(slice()方法接收两个参数时,不包含第二个参数位置的数),然后再添加item,最后再把index到arr末尾的元素添加上即可。
发表于 2017-07-30 13:36:28 回复(0)
function insert(arr, item, index) {
return arr.slice(0, index).concat(item).concat(arr.slice(index));

}
发表于 2017-03-16 21:15:48 回复(0)
function insert(arr, item, index) {
    var newArr = arr.slice();
    for(var i =  arr.length; i>index; i--) {
        newArr[i] = newArr[i-1];
    }
    newArr[index] = item;
    return newArr;
}
发表于 2017-03-15 14:16:09 回复(0)
function insert(arr, item, index) {
return arr.slice(0, index).concat([item], arr.slice(index, arr.length));
}
发表于 2016-12-01 16:43:44 回复(1)
function insert(arr, item, index) {
		var newArr = arr.slice(0);
		newArr.splice(index, 0, item);
		return newArr;
	}

发表于 2016-09-12 22:48:44 回复(2)
最笨的办法
function insert(arr, item, index) {
var newArr = [];
    for(var i=0;i<index;++i){
        newArr.push(arr[i]);
    }
    newArr.push(item);
    for(var i=index;i<arr.length;++i){
        newArr.push(arr[i]);
    }
    return newArr;
}
发表于 2016-08-07 18:58:33 回复(0)
function insert(arr, item, index) {
    var newArr = [];
    for(var i in arr){
        newArr[i] = arr[i];
    }
	newArr.splice(index,0,item);
    return newArr;
}

发表于 2016-08-03 13:52:29 回复(0)
    function insert(arr, item, index) {
        var result = new Array();
        var temp = new Array();
        if (index > -1 && index < arr.length) {
            result = arr.slice(0, index);
            temp = arr.slice(index);
            result.push(item);
            result.push(temp);   
        }
        return result;
    }
发表于 2016-06-07 17:15:25 回复(1)