在javascript中查找数组中连续数字之间的差异

mys*_*low 11 javascript

我有以下数组

A=[1,2,3,3,0] 
Run Code Online (Sandbox Code Playgroud)

如果我想计算数组中连续数字之间的差异.我可以在Matlab中使用内置函数(diff)

B=diff(A) 回报

B = [1,1,0,-3]
Run Code Online (Sandbox Code Playgroud)

我想知道javascript中有任何类似的内置函数吗?

Roy*_*y J 12

如果您更喜欢函数式编程,请使用map以下解决方案:

function diff(A) {
  return A.slice(1).map(function(n, i) { return n - A[i]; });
}
Run Code Online (Sandbox Code Playgroud)

一点解释:slice(1)得到除了第一个元素之外的所有元素.map为每个返回一个新值,返回的值是元素与A中相应元素(un- sliced数组)之间的差值,因此A[i][i]切片之前的元素.

这是jsfiddle:https://jsfiddle.net/ewbmrjyr/2/


j08*_*691 7

没有这样的内置函数,但写一个很简单:

function diff(ary) {
    var newA = [];
    for (var i = 1; i < ary.length; i++)  newA.push(ary[i] - ary[i - 1])
    return newA;
}
var A = [1, 2, 3, 3, 0];
console.log(diff(A)) // [1, 1, 0, -3]
Run Code Online (Sandbox Code Playgroud)

这里是小提琴:https://jsfiddle.net/ewbmrjyr/1/