javascript - 为什么我不断收到 TypeError : args. sort is not a function?

标签 javascript

function getIndexToIns(arr, num) {

  var args = Array.prototype.join.call(arguments);

  function compareNumbers(a, b) {
    return a - b;
  }
  args.sort(compareNumbers);

  return args;

}

getIndexToIns([40, 60], 50);

最佳答案

错误的抛出仅仅是因为Array.prototype.join 返回了一个字符串。为了将类数组对象转换为数组,您需要改用Array.prototype.slice.call

替换

 var args = Array.prototype.join.call(arguments);

有了这个

 var args = Array.prototype.slice.call(arguments);

或使用 Function.prototype.apply

var args = Array.apply(null, arguments);

或使用 Array.from

var args = Array.from(arguments);

最干净的解决方案是 ES6 rest parameters

function getIndexToIns(...args) {

  function compareNumbers(a, b) {
    return a - b;
  }
  args.sort(compareNumbers);

  return args;

}

getIndexToIns([40, 60], 50);

关于javascript - 为什么我不断收到 TypeError : args. sort is not a function?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36396651/

相关文章:

javascript - 如何从非图像的 WebSocket 读取 BLOB 数据

javascript - nodejs mssql 返回记录集

javascript - XEP-0077 使用 Strophe.js 和 openfire 进行带内注册

javascript - 使用 Vue Router 时 Laravel 路由不起作用

javascript - vue js table 加新行时类似Stack Overflow的高亮效果

递归调用重新启动代码后,Javascript 事件监听器不会触发

javascript - 我们如何区分响应式网络应用程序和渐进式网络应用程序?

javascript - Crockford 的原型(prototype)继承 - 嵌套对象的问题

javascript - 循环中页面对象的范围丢失

javascript - 具有 webpack 配置的 Angular 1.x