首页 > 解决方案 > 获取参数对象以处理下划线 _.first 函数?

问题描述

我必须重新创建Underscore _.first function,但我无法让它在参数对象上工作。这些是它必须通过的测试:

这就是我到目前为止所拥有的:

_.first = function (array, n) {

  var arr = [];

  if (!Array.isArray(array)) return arr;
  if (isNaN(n) || n == null || n <= 0) return array.slice(0,1);
  else return array.slice(0, n);
};

非常感谢任何帮助!非常感谢 :)

标签: javascriptarraysarguments

解决方案


我猜你正在寻找

_.first = function (array, n) {
  if (!Array.isArray(array))
    array = Array.from(array);
  if (typeof n != "number" || isNaN(n) || n <= 0)
    n = 1;
  return array.slice(0, n);
};

Array.from 适用于任何可迭代或具有.length属性的对象,就像arguments 对象一样。然而,这个练习读起来就像它希望你自己实现一个元素复制循环,而不是调用slice,这样就可以轻松地处理任何类似数组的对象。


推荐阅读