题目描述

在数组 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);
};

results matching ""

    No results matching ""