在JavaScript中,有没有一种方法可以在不传递整个数组的情况下将数组的元素传递给函数?
In JavaScript, is there any way of passing elements of an array into a function without passing in the entire array?
例如,在
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]
传递数组也不是低效的。你所要做的就是传递一个引用到数组,这比从数组中传递两个元素更有效。
所有变量都是通过引用在内部识别的,当你将引用传递给函数时,数组或对象的大小对代码速度没有影响。
相关文章:
- 从多维嵌套json数组创建下拉列表
- 使用数组向下搜索Javascript对象
- 将一个对象转换为一个单键对象数组(带下划线?)
- 咖啡脚本数组查找下一个位置
- 使用 JavaScript 数组填充下拉选择框
- 如何在不使用模数的情况下编写此函数
- 如何在javascript中获取数组的下一个元素
- 如何在不限制返回结果数的情况下进行查询
- 显示数组的下一个/上一个项目
- 在javascript点击后获取数组的下一个元素,并以搜索形式显示
- 如何使用数组分配下拉选项值
- 每个CasperJS然后是响应数组的下一个(未来)值
- JavaScript - 用数组填充下拉列表
- ng repeat:用数组填充下拉选项
- 从jquery中的二维数组填充下拉列表
- 两个依赖于Rails模型中数组的下拉菜单项
- 动态创建的带有填充数组的下拉列表不会使用angular更新
- 对象数组的下划线数组操作
- 数组的下标是否被移到了正确的位置向左还是向右
- 从数组填充下拉列表