例如,在
中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#术语)的方法?
答案 0 :(得分:2)
如果使用ECMAScript6,则可以使用解构来交换。
$scope.$apply('home.contact.phone = "123-456-7890"');
这非常方便,也是我喜欢Javascript的原因之一。
但在使用之前请检查兼容性。 否则你必须使用temp var。
您可以使用该方法反转数组。
var a = 0;
var b = 1;
[a, b] = [b, a];
同样传递数组效率不高。您所做的只是传递对数组的引用,并且比从数组传递两个元素更有效。
所有变量都通过引用在内部进行标识,当您将引用传递给函数时,数组或对象的大小对代码速度没有影响。