在JavaScript中,有没有一种方法可以在不传递整个数组的情况下将数组的元素传递给函数?

In JavaScript, is there any way of passing elements of an array into a function without passing in the entire array?

本文关键字:数组 情况下 函数 元素 有没有 JavaScript 方法 一种      更新时间:2023-09-26

例如,在

function swap ( arr, i1, i2 ) 
{
    // swaps elements at index i1 and i2
    // in the array arr
    var temp = arr[i1];
    arr[i1] = arr[i2];
    arr[i2] = temp;
}
function reverse_array ( arr ) 
{
    // reverse the order of the elements in array arr
    var i1 = 0, i2 = arr.length;
    while ( i1 != i2 && i1 != --i2 ) swap(arr,i1++,i2);
}
var myArray = [1, 2, 3, 4];
reverse_array(myArray);
myArray.forEach(function(elem) { $('#mydiv').append(elem + ' ') });

我所知道的为数组元素实现swap函数的唯一方法是传入数组in。然而,这似乎效率低下。必须有一种方法可以为任何类型的变量实现直接的swap函数。我想我的问题可以归结为:

在JavaScript中实现swap函数的最有效方法是什么?

在将变量传递到经典的function swap ( a, b ) { temp = a; a = b; b = temp; }过程之前,是否有一种"装箱"(使用c#术语)的方法?

如果您使用ECMAScript6,您可以使用解构来交换

var a = 0;
var b = 1;
[a, b] = [b, a];

非常方便,这也是我喜欢Javascript的原因之一。

但请在使用前检查兼容性。否则,您必须使用临时变量。

你可以使用方法反转一个数组。

var arr = [1,2,3,4,5,6,7];
arr.reverse(); // [7,6,5,4,3,2,1]

传递数组也不是低效的。你所要做的就是传递一个引用到数组,这比从数组中传递两个元素更有效。

所有变量都是通过引用在内部识别的,当你将引用传递给函数时,数组或对象的大小对代码速度没有影响。