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

时间:2015-05-22 14:18:14

标签: javascript

我有以下数组

A=[1,2,3,3,0] 

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

在Matlab中完成

B=diff(A)返回

B = [1,1,0,-3]

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

4 个答案:

答案 0 :(得分:12)

如果您更喜欢函数式编程,请使用map

作为解决方案
function diff(A) {
  return A.slice(1).map(function(n, i) { return n - A[i]; });
}

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

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

答案 1 :(得分:6)

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

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]

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

答案 2 :(得分:1)

var a = [1,2,3,3,0] ;
function diff (arr){
    diffArr=[];
    for(var i=0; i<arr.length-1; i++){
        diffArr.push(arr[i+1]-arr[i]);

    }
    return diffArr;
}
alert(diff(a)); //[1,1,0,-3]

答案 3 :(得分:0)

可以使用Array methodsArrow functions简化代码:

var visitsArr = [38,29,18,29,28,18,24];

var diffs = visitsArr.slice(1).map((x,i)=> x-visitsArr[i]);

diffs.forEach((x,i) => console.log(
   `Visits from day ${i+1} to day ${i+2} increased by ${x}`
));

有关更多信息,请参见