题目描述
在数组 arr 末尾添加元素 item。不要直接修改数组 arr,结果返回新的数组
示例1
输入
[1, 2, 3, 4], 10
输出
[1, 2, 3, 4, 10]
实现代码:
// 这一题的重点在于不能对原数组直接操作
function append(arr, item) {
var a=[];
for(var i=0;i<arr.length;i++){
a.push(arr[i]);
}
a.push(item);
return a;
}
append([1, 2, 3, 4], 10);
// 题目要求不改变原数组,可以使用arr.slice(0)复制一个数组赋值给a。给数组添加元素可使用push方法。
function append(arr, item) {
//复制数组
var a = arr.slice(0);
//添加元素
a.push(item);
return a;
}
/**
* 普通的迭代拷贝
* @param arr
* @param item
* @returns {Array}
*/
var append = function(arr, item) {
var length = arr.length,
newArr = [];
for (var i = 0; i < length; i++) {
newArr.push(arr[i]);
}
newArr.push(item);
return newArr;
};
/**
* 使用slice浅拷贝+push组合
* @param arr
* @param item
* @returns {Blob|ArrayBuffer|Array.<T>|string}
*/
var append2 = function(arr, item) {
var newArr = arr.slice(0); // slice(start, end)浅拷贝数组
newArr.push(item);
return newArr;
};
/**
* 使用concat将传入的数组或非数组值与原数组合并,组成一个新的数组并返回
* @param arr
* @param item
* @returns {Array.<T>|string}
*/
var append3 = function(arr, item) {
return arr.concat(item);
};