Javascript 获取参数对象以处理下划线u1;第一个函数?

Javascript 获取参数对象以处理下划线u1;第一个函数?,javascript,arrays,arguments,Javascript,Arrays,Arguments,我必须重新创建下划线。.first函数,但无法使其在参数对象上工作。以下是它必须通过的测试: 应返回包含数组前n个元素的数组 如果n不是数字、为零或为负,则应返回包含第一个元素的数组 如果n大于长度,则应返回整个数组 如果数组不是数组,则应返回空数组 应适用于arguments对象 这就是我到目前为止所做的: _.first = function (array, n) { var arr = []; if (!Array.isArray(array)) return arr;

我必须重新创建下划线。.first函数,但无法使其在参数对象上工作。以下是它必须通过的测试:

  • 应返回包含数组前n个元素的数组
  • 如果n不是数字、为零或为负,则应返回包含第一个元素的数组
  • 如果n大于长度,则应返回整个数组
  • 如果数组不是数组,则应返回空数组
  • 应适用于arguments对象
这就是我到目前为止所做的:

_.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);
};
\uu0.first=函数(数组,n){
var-arr=[];
如果(!Array.isArray(Array))返回arr;

如果(isNaN(n)| | n==null | | n如果在参数是对象的情况下它应该能够返回
n
第一个条目,那么类似的方法应该可以工作:

if (typeof array === 'object' && array !== null) {
   const obj = array;
   return Object.entries(obj).slice(0, n);
}

我猜你在找

_.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);
};
\uu0.first=函数(数组,n){
如果(!Array.isArray(数组))
array=array.from(数组);
if(typeof n!=“number”| | isNaN(n)| | n已解决

_.first = function (array, n) {

  if (array == null || array == undefined || array.length < 1) return [];
  array = Array.from(array);
  if (isNaN(n) || n == null || n <= 0) return array.slice(0,1);
  else return array.slice(0, n);
};
\uu0.first=函数(数组,n){
if(array==null | | array==undefined | | array.length<1)返回[];
array=array.from(数组);

如果(isNaN(n)| | n==null | | n“arguments object”是什么意思?它应该能够返回对象的n个第一属性?这解决了问题,但是在使用它之后,另一个测试失败“如果数组不是数组,则应返回空数组”:/@Ed.P发布答案后,请不要在问题中编辑不同的要求。此外,这些测试是相互冲突的:arguments对象不是数组,那么它应该如何处理它们?请咨询您的讲师进行澄清。