.map, возвращающая строку в массиве вместо массива чисел - PullRequest
0 голосов
/ 29 марта 2019

Игра с кодом, который я нашел, и результаты не имеют для меня смысла.

Я не понимаю, почему REPL считает массив одним длинным строковым значением ... Я ничего не сделал, чтобы указать, что это строка, и мне интересно, почему консоль дает мне следующий результат.

F = (...x) => x.map(v => x+1)

//ACTUAL
F([1,2,3]) //["1,2,31"]

//EXPECTED
F([1,2,3]) //[2,3,4]

var F =(...x) => x.map(v => x+1)  
var result = F([1,2,3]);
console.log(result);

Ответы [ 3 ]

3 голосов
/ 29 марта 2019

Вы передаете массив в качестве аргумента, так как вы используете Параметр Rest для параметра функции, значение x станет [[1,2,3]]. Теперь, когда вы используете map, на первой итерации v будет [1,2,3], а [1,2,3] + 1 приведет к конкатенации строк, поскольку [1,2,3] не является числом, а [1,2,3] прикрывает строку, в результате получается строка с запятой разделенное значение.

Поэтому передайте аргументы как множественные или используйте простой параметр.

Как:

function F(x){ return  x.map(v => x+1) }

или вызывать функцию вроде:

F(1, 2, 3)
// or
F(...[1, 2, 3])
1 голос
/ 29 марта 2019

Вы делаете две ошибки.

  • Вы используете параметры отдыха, но передаете массив.
  • Вы добавляете к x, который является массивом и будет преобразовандо string при использовании +.Вы возвращаете v+1

const F=(x) => x.map(v => v+1)
console.log(F([1,2,3]))

Если вы хотите использовать остальные параметры, просто передайте 1, 2, 3 в качестве отдельных аргументов.

const F=(...x) => x.map(v => v+1)
console.log(F(1,2,3))
0 голосов
/ 29 марта 2019

Вы ищете F = x => x.map(v => v+1), таким образом ...

F([1,2,3]) == [2, 3, 4] # evaluates to true

Нет необходимости в синтаксисе распространения.Функция F должна просто принимать массив, чтобы он возвращал результат [1,2,3].map(v => v+1).У вас есть x.map(v => x+1), который не использует параметр v функции, передаваемой в функцию .map().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...