在Array.prototype.map中返回上一步

时间:2018-12-02 07:26:37

标签: javascript arrays

在JavaScript的Array.prototype.mapArray.prototype.forEach中是否可以向后迭代一次?也就是说,如果当前的迭代索引为2,我们可以返回索引1吗?请记住,我们可以通过减少for-loop来使用正常的i实现这一目标,有没有办法使用map做到这一点?

1 个答案:

答案 0 :(得分:2)

您可以使用提供给回调的第三个参数来访问 .map中的上一个元素:

const input = [1, 2, 3];

const output = input.map((num, i, arr) => {
  console.log('last num was ' + arr[i - 1] + ', current num is ' + num);
  return num + 1;
});

但是,由于先前迭代的.map回调已经运行并返回了值,因此无法分配到新映射数组中的先前元素。

一个可能完成您要查找的方法的方法是,从当前元素 forwards 中查找并返回新的方法,而不是从下一个元素向后查找基于此的映射值:

const input = [1, 2, 3];

const output = input.map((num, i, arr) => {
  console.log('next num is ' + arr[i + 1] + ', current num is ' + num);
  return num + (arr[i + 1] || 0);
});
console.log(output);