这个题,我第一反应是第一种方法。但也是写的有缺陷。我写的是:
没有var append=function
我也不知道为什么这里要声明一下变量。
后面两种方法我本应该会的,但是没想起来,分别用slice和concat。
链接:https://www.nowcoder.com/questionTerminal/3c7905cea3264ddaac4bf637ab3a19f9?f=discussion
来源:牛客网
/**
* 普通的迭代拷贝
* @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
* @para