作为练习,我必须重现 Underscore.js 库中的第一个函数。
我编写的代码通过了所有测试,除了“应该在参数对象上工作”。
我通过了这些测试:
我没有通过这个测试:应该在参数对象上工作
_.first = function (array, n) {
let arr = [];
if (!Array.isArray(array)) {
return [];
} else if (isNaN(n) || n == null || n <= 0) {
return [array[0]];
} else {
for (let i = 0; i < n && i < array.length; i++) {
arr.push(array[i]);
}
}
return arr;
};
我很高兴获得一些指导来理解为什么我无法通过参数对象测试。谢谢!
您的
first
函数的问题在于您正在测试 Array.isArray()
的基本情况。 args
对象是 array-like
而不是 array
。所以你也必须考虑到这种情况。由于 length
和 array
对象都存在 array-like
属性,因此您可以在基本情况下利用它。比如:
_.first = function (array, n) {
let arr = [];
// Check if the input has a length property
if (typeof array.length !== 'number') {
return [];
}
// ...rest
};