簡體   English   中英

在javascript中查找數組中連續數字之間的差異

[英]Finding difference between consecutive numbers in an array in javascript

我有以下數組

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

如果我想計算數組中連續數字之間的差異。 我可以在 Matlab 中使用內置函數( diff )來完成

B=diff(A)返回

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

我想知道javascript中是否有類似的內置函數?

如果您更喜歡函數式編程,這里有一個使用map的解決方案:

function diff(A) {
  return A.slice(1).map(function(n, i) { return n - A[i]; });
}

一點解釋: slice(1)獲取除第一個元素之外的所有元素。 map為其中的每一個返回一個新值,返回的值是該元素與 A 中對應元素之間的差值,(未slice d 數組),因此A[i]是該元素中[i]之前的元素片。

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

沒有這樣的內置函數,但編寫一個很簡單:

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/

可以通過使用數組方法箭頭函數來簡化代碼:

 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}` ));

有關更多信息,請參閱

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]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM