Использование функции условной карты для преобразования массива - PullRequest
0 голосов
/ 22 декабря 2018

У меня есть массив чисел, который я хочу отобразить в новый массив чисел.

let numbers= [1,3,5,10,11]

необходимо преобразовать в

var result = [4,8,15,21,11];

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

let numbers= [1,3,5,10,11]

const result = numbers.map(x => resultBinding(x))


function resultBinding(x){

}

Теперь моя проблема в том, что я не хочу пытаться избегать большого количества операторов if.определить каждое значение.

Ответы [ 3 ]

0 голосов
/ 22 декабря 2018

Я бы использовал reduce для отслеживания предыдущего значения массива с помощью аккумулятора:

 const result = [];
 array.reduce((a, b) => (result.push(a + b), b));
 result.push(array.pop()); // add the trailing 11
0 голосов
/ 22 декабря 2018

операция результата = [1 + 3, 3 + 5, 5 + 10, 10 + 11, 11].последний индекс результата совпадает с массивом чисел, потому что после этого индекса нет.

let numbers= [1,3,5,10,11];

let result = numbers.map((num, index)=> (index+1) >= numbers.length ? num : num + numbers[index+1])

console.log(result);
0 голосов
/ 22 декабря 2018

Итерируйте это с Array.map().Объедините текущий элемент и следующий элемент (или 0, если он не определен):

const numbers= [1,3,5,10,11]

const result = numbers.map((n, i) => n + (numbers[i + 1] || 0));
  
console.log(result);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...