Я работаю над упражнением по изучению JavaScript и не могу понять, почему мой код терпит оценку теста. И да, я понимаю, что я избыточно (и беспорядочно) переопределяет Underscore.js _.last. Это и есть цель упражнения.Работа с JavaScript array.slice()
_.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)
Может ли кто-нибудь сказать, почему этот ожидание возвращает false? Что я не замечаю
Спасибо заранее.
EDIT: решена. еще отредактирован, чтобы вернуть значение, если не определено п === вместо того, чтобы возвращать массив одного значения:
return n === undefined ? array[array.length-1] : array.slice(-n);
Так вы ожидаете его вернуть '3', но получить массив с входом 3. И.Д. '[3]'? – janfoeh
Я собираюсь предположить, что это потому, что '[3]! == 3' –
А, хорошо, это имеет смысл. Я действительно задавался вопросом, может ли это быть так. Спасибо :) –