在JavaScript中,如何优雅地创建数组元素的差异列表?

fra*_*ans 3 javascript arrays functional-programming ecmascript-6

我有一个数字列表,比如说numbers = [3,7,9,10],我想有一个包含相邻元素之间差异的列表-在给定的情况下,该元素必须少一个 diffs = [4,2,1]

当然,我可以创建一个新列表,遍历输入列表并手动编译结果。

我正在寻找一种优雅/功能(更不用说pythonic)的方式来做到这一点。在Python中,您将为此编写[j-i for i, j in zip(t[:-1], t[1:])]或使用numpy

reduce()JavaScript中也有一个/ list理解方法吗?

Nin*_*olz 5

您可以切片并映射差异。

var numbers = [3, 7, 9, 10],
    result = numbers.slice(1).map((v, i) => v - numbers[i]);

console.log(result);
Run Code Online (Sandbox Code Playgroud)

反向方法,随后进行切片。

var numbers = [3, 7, 9, 10],
    result = numbers.map((b, i, { [i - 1]: a }) => b - a).slice(1);

console.log(result);
Run Code Online (Sandbox Code Playgroud)