在JavaScript中,有没有办法将数组的元素传递给函数而不传入整个数组?

时间:2015-10-20 21:53:31

标签: javascript reference

例如,在

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函数的唯一方法是传入数组。但是,这似乎效率低下。必须有一种方法可以为任何类型的变量实现直接swap函数。我想我的问题可以归结为:

在JavaScript中实现交换功能的最有效方法是什么?

在将变量传递给经典function swap ( a, b ) { temp = a; a = b; b = temp; }程序之前,是否有一种“拳击”(使用C#术语)的方法?

1 个答案:

答案 0 :(得分:2)

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

$scope.$apply('home.contact.phone = "123-456-7890"');

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

但在使用之前请检查兼容性。 否则你必须使用temp var。

您可以使用该方法反转数组。

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

同样传递数组效率不高。您所做的只是传递对数组的引用,并且比从数组传递两个元素更有效。

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