在javascript中将数组拼接成数组的更好方法

有没有比这更好的方式在javascript中将数组拼接到另一个数组中

var string = 'theArray.splice('+start+', '+number+',"'+newItemsArray.join('","')+'");';
eval(string);

您可以使用apply来避免评估:

var args = [start, number].concat(newItemsArray);
Array.prototype.splice.apply(theArray, args);

apply函数用于调用具有给定上下文和参数的另一个函数,以数组形式提供,例如:

如果我们打电话:

var nums = [1,2,3,4];
Math.min.apply(Math, nums);

apply函数将执行:

Math.min(1,2,3,4);

把它包装成一个函数,你可以得到这个:

function insertArrayAt(array, index, arrayToInsert) {
    Array.prototype.splice.apply(array, [index, 0].concat(arrayToInsert));
}

你会像这样使用它:

var arr = ["A", "B", "C"];
insertArrayAt(arr, 1, ["x", "y", "z"]);
alert(JSON.stringify(arr)); // output: A, x, y, z, B, C

你可以在这个jsFiddle中查看它:http://jsfiddle.net/luisperezphd/Wc8aS/


如果你想要的东西几乎与splice方法相同,你也可以在Array原型中添加这样一个函数。 例如

Array.prototype.spliceArray = function(index, n, array) {
    return Array.prototype.splice.apply(this, [index, n].concat(array));
}

然后用法就是:

var array = ["A","B","C","","E","F"];

array.splice(3,1,"D");
// array is ["A","B","C","D","E","F"]

array.spliceArray(3,3,["1","2","3"]);
// array is ["A","B","C","1","2","3"]

在这里看到它的行动:http://jsfiddle.net/TheMadDeveloper/knv2f8bb/1/

一些说明:

  • splice函数直接修改数组,但返回已移除的元素数组...不是拼接的数组。
  • 尽管通常不推荐扩展核心JavaScript类,但对于大多数标准框架而言,这是相对良性的。
  • 在使用专用数组类的情况下,扩展Array不起作用,例如ImageData数据Uint8ClampedArray。
  • 链接地址: http://www.djcxy.com/p/4991.html

    上一篇: A better way to splice an array into an array in javascript

    下一篇: Get selected value in dropdown list using JavaScript?