javascript - 获取参数对象以处理下划线 _.first 函数?
问题描述
我必须重新创建Underscore _.first function,但我无法让它在参数对象上工作。这些是它必须通过的测试:
- 应该返回一个包含数组前 n 个元素的数组
- 如果 n 不是数字、为零或负数,则应返回包含第一个元素的数组
- 如果 n > 长度,则应返回整个数组
- 如果数组不是数组,则应返回一个空数组
- 应该在参数对象上工作
这就是我到目前为止所拥有的:
_.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);
};
非常感谢任何帮助!非常感谢 :)
解决方案
我猜你正在寻找
_.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
,这样就可以轻松地处理任何类似数组的对象。
推荐阅读
- biztalk - BizTalk 2013R2 中决定形状的大小写敏感性
- sublimetext - 如何在 Sublime Text 上使用键绑定 `Ctrl+space` 设置标记?
- javascript - 如何使用 Jest 在导入的模块中模拟函数?
- google-cloud-platform - 启用虚拟化技术 RDP
- javascript - 节点服务器未返回此特定数据集的响应
- string - 如何检查 GETOPTS 提供的参数值是否等于特定字符串?
- scikit-learn - 随机森林递归特征消除中的分类变量
- android - HttpClient.SendAsync 在 Xamarin.Forms Android 上引发 ObjectDisposedException,但在 UWP 上却没有
- php - 使用 PHP 从数据库中获取行,从行中获取值并插入 HTML
- html - React HTML 选择选项在 Chrome 中不起作用