Я работаю над промежуточным алгоритмом F CC «Аргументы необязательны». Вот инструкции о том, что должно произойти:
Скриптинг промежуточного алгоритма: Аргументы Необязательно
- Создайте функцию, которая суммирует два аргумента вместе. Если указан только один аргумент, вернуть функцию, которая ожидает один аргумент и возвращает сумму.
- Например, addTogether (2, 3) должна вернуть 5, а addTogether (2) должна вернуть функцию.
- Вызов этой возвращенной функции с одним аргументом вернет сумму: var sumTwoAnd = addTogether (2); sumTwoAnd (3) возвращает 5.
- Если какой-либо аргумент не является допустимым числом, вернуть неопределенное значение.
Я написал код, чтобы сделать все, как описано выше, но одно требование заключается в том, что все аргументы должны быть числами, в противном случае вернуть undefined
(# 4 выше). Вы увидите, что я написал переменную троичного оператора (строка 5 моего кода) numbersOnly
, которая, я думал, справится с этим, но она просто возвращает [Function] в консоли.
function addTogether() {
// Convert args to an array
let args = [...arguments];
// Only accept numbers or return undefined and stop the program
const numbersOnly = value => typeof(value) === 'number'? value : undefined;
// test args for numbersOnly and return only the first two arguments regardless of the length of args
let numbers = args.filter(numbersOnly).slice(0, 2);
// // It has to add two numbers passed as parameters and return the sum.
if (numbers.length > 1) {
return numbers[0] + numbers[1];
}
// If it has only one argument then it has to return a function that uses that number and expects another one, to then add it.
else if (numbers.length === 1) {
let firstParam = numbers[0];
return function(secondParam) {
if (typeof secondParam !== 'number' || typeof firstParam !== 'number') {
return undefined;
}
return secondParam + firstParam;
}
}
}
Я прохожу все тесты, кроме # 4, который должен вернуть undefined. Я не совсем понимаю, почему 5 проходит и возвращает неопределенное значение, но 4 не удается. Что мне здесь не хватает? Спасибо!
1. addTogether(2, 3) should return 5.
2. addTogether(2)(3) should return 5.
3. addTogether("https://www.youtube.com/watch?v=dQw4w9WgXcQ") should return undefined.
4. addTogether(2, "3") should return undefined.
5. addTogether(2)([3]) should return undefined.