[英]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.