我有以下简单的数组:
my_array = [1, 11, 44, 4]
Run Code Online (Sandbox Code Playgroud)
我想生成一个由这些元素之间的差异组成的新数组,所以它将是:
diff_array = [10, 33, 40]
Run Code Online (Sandbox Code Playgroud)
解决这个问题的最佳方法是什么?
您可以使用Array#reduce迭代并获取绝对增量来推送到结果数组.
基本上你需要array.length - 1增量和迭代.在这种情况下3.如果没有给出起始值,则减少前两个元素并迭代所需长度.虽然它需要delta的最后一个值,但返回最后一个值.
最后,reduce的返回值被丢弃,因为它不再被使用.
Run Code Online (Sandbox Code Playgroud)1 11 44 4 values \ / \ / \ / 10 33 40 Math.abs(delta)
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)