我有以下数组
A=[1,2,3,3,0]
如果我想计算数组中的连续数字之间的差异。我可以在Matlab中使用内置函数(diff
)来完成它。
B=diff(A)
返回
B = [1,1,0,-3]
我想知道javascript中有类似的内置函数吗?
发布于 2015-05-22 14:29:26
没有这样的内置函数,但是编写一个函数很简单:
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]
发布于 2015-05-22 14:46:33
如果您更喜欢函数式编程,这里有一个使用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/
发布于 2018-08-01 16:21:13
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}`
));
有关详细信息,请参阅
https://stackoverflow.com/questions/30399123
复制相似问题