Javascript arguments.sort()抛出错误排序不是一个函数

时间:2015-02-04 00:06:59

标签: javascript

只是想知道为什么我使用以下简单的JavaScript函数出错了

function highest(){ 
  return arguments.sort(function(a,b){ 
    return b - a; 
  }); 
}
highest(1, 1, 2, 3);

错误消息:TypeError:arguments.sort不是函数。

我很困惑,因为它是一个数组(我想)。请帮忙解释原因。非常感谢

3 个答案:

答案 0 :(得分:15)

因为arguments没有sort方法。请注意,arguments不是Array对象,而是类似数组的Arguments object

但是,您可以使用Array.prototype.slicearguments转换为数组;然后您就可以使用Array.prototype.sort

function highest(){ 
  return [].slice.call(arguments).sort(function(a,b){ 
    return b - a; 
  }); 
}
highest(1, 1, 2, 3); // [3, 2, 1, 1]

答案 1 :(得分:1)

另一种方法是通过将参数声明为数组。

df = pd.Series(array1)/array1[0]*100

因此,最高()可以定义为;

var myArguments = [1, 1, 2, 3];
var sortedArguments = [];

答案 2 :(得分:1)

使用扩展语法将参数转换为实际数组:

   function highest(...arguments){ 
      return arguments.sort(function(a,b){ 
        return b - a; 
      }); 
   }
   highest(1, 1, 2, 3);

输出:(4) [3, 2, 1, 1]

Console