如何使用Array.prototype.slice.call交换数组中的值

时间:2014-08-01 14:24:14

标签: javascript

它应该很简单,但我无法理解为什么这不起作用:

function swapValues() {
    var args = Array.prototype.slice.call(arguments);
    var temp = args[0];
    args[0] = args[1];
    args[1] = temp;
    return temp;
}

var arr = [1,2] 
swapValues(arr);

它应该交换值 - 但它不会。

2 个答案:

答案 0 :(得分:0)

arguments是参数的对象,因此args[0][1,2](第一个参数),args[1]undefined

你想要这样的东西:

function swapValues() {
    var arg = Array.prototype.slice.call(arguments)[0];
    var temp = arg[0];
    arg[0] = arg[1];
    arg[1] = temp;
    return arg;
}

答案 1 :(得分:0)

我几乎没有改变你的代码,但这样看起来更好。希望它有所帮助。

function swapValues(arr) {
    var t = arr[0]; arr[0] = arr[1]; arr[1]=t;
    return arr;
}

var arr = [1,2] 
swapValues(arr);