Javascript跟踪数组中元素之间的差异?

Bab*_*ham 2 javascript arrays

我有以下简单的数组:

my_array = [1, 11, 44, 4]
Run Code Online (Sandbox Code Playgroud)

我想生成一个由这些元素之间的差异组成的新数组,所以它将是:

diff_array = [10, 33, 40]
Run Code Online (Sandbox Code Playgroud)

解决这个问题的最佳方法是什么?

Nin*_*olz 6

您可以使用Array#reduce迭代并获取绝对增量来推送到结果数组.

基本上你需要array.length - 1增量和迭代.在这种情况下3.如果没有给出起始值,则减少前两个元素并迭代所需长度.虽然它需要delta的最后一个值,但返回最后一个值.

最后,reduce的返回值被丢弃,因为它不再被使用.

1    11    44    4   values
 \  /  \  /  \  /
  10    33    40     Math.abs(delta)
Run Code Online (Sandbox Code Playgroud)

var array = [1, 11, 44, 4],
    result = [];
    
array.reduce(function (a, b) {
    result.push(Math.abs(a - b));
    return b; 
});

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