JavaScript array.slice() 行为
JavaScript array.slice() behavior
我正在进行学习 JavaScript 的练习,无法弄清楚为什么我的代码未通过测试评估。是的,我意识到我多余地(而且很乱地)重新定义 Underscore.js _.last。这就是练习的目的。
_.last = function(array, n) {
if (n === 0) {
return [];
}
else {
return n === undefined ? array.slice(-1) : array.slice(-n);
};
}'
这些是我在 运行:
时得到的结果
_.last([1,2,3], 2)
[2, 3]
_.last([1,2,3], 5)
[1, 2, 3]
_.last([1,2,3], 0)
[]
_.last([1,2,3])
[3]
最后一次调用 _.last([1,2,3]) 未通过此评估:
expect(_.last([1,2,3])).to.equal(3)
谁能说出为什么这个期望 return 是错误的?我忽略了什么
提前谢谢你。
编辑:已解决。
如果 n===undefined 而不是 returning 单值数组,则编辑为 return 值:
return n === undefined ? array[array.length-1] : array.slice(-n);
引用array.slice描述:
The slice() method returns the selected elements in an array, as a new
array object.
基本上你的代码没问题,你的测试不行:
你应该改变:
expect(_.last([1,2,3])).to.equal(3)
至:
expect(_.last([1,2,3])).to.equal([3])
Array.prototype.slice
returns 一个数组。如果你比较一个数组和一个数字,它们就会不同。
相反,考虑使用相同的下划线 does:
if (n == null /*|| guard*/) return array[array.length - 1];
我正在进行学习 JavaScript 的练习,无法弄清楚为什么我的代码未通过测试评估。是的,我意识到我多余地(而且很乱地)重新定义 Underscore.js _.last。这就是练习的目的。
_.last = function(array, n) {
if (n === 0) {
return [];
}
else {
return n === undefined ? array.slice(-1) : array.slice(-n);
};
}'
这些是我在 运行:
时得到的结果_.last([1,2,3], 2)
[2, 3]
_.last([1,2,3], 5)
[1, 2, 3]
_.last([1,2,3], 0)
[]
_.last([1,2,3])
[3]
最后一次调用 _.last([1,2,3]) 未通过此评估:
expect(_.last([1,2,3])).to.equal(3)
谁能说出为什么这个期望 return 是错误的?我忽略了什么
提前谢谢你。
编辑:已解决。 如果 n===undefined 而不是 returning 单值数组,则编辑为 return 值:
return n === undefined ? array[array.length-1] : array.slice(-n);
引用array.slice描述:
The slice() method returns the selected elements in an array, as a new array object.
基本上你的代码没问题,你的测试不行:
你应该改变:
expect(_.last([1,2,3])).to.equal(3)
至:
expect(_.last([1,2,3])).to.equal([3])
Array.prototype.slice
returns 一个数组。如果你比较一个数组和一个数字,它们就会不同。
相反,考虑使用相同的下划线 does:
if (n == null /*|| guard*/) return array[array.length - 1];