首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在javascript中查找数组中的连续数字之间的差异

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

Stack Overflow用户
提问于 2015-05-22 14:18:14
回答 4查看 11.2K关注 0票数 20

我有以下数组

代码语言:javascript
运行
复制
A=[1,2,3,3,0] 

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

B=diff(A)返回

代码语言:javascript
运行
复制
B = [1,1,0,-3]

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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-05-22 14:29:26

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

代码语言:javascript
运行
复制
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/

票数 13
EN

Stack Overflow用户

发布于 2015-05-22 14:46:33

如果您更喜欢函数式编程,这里有一个使用map的解决方案

代码语言:javascript
运行
复制
function diff(A) {
  return A.slice(1).map(function(n, i) { return n - A[i]; });
}

一个小小的解释:除了第一个元素之外,slice(1)获得了所有内容。map为每个数组返回一个新值,返回的值是A中元素和对应元素( un-sliced数组)之间的差异,因此A[i]是片中[i]之前的元素。

下面是jsfiddle:https://jsfiddle.net/ewbmrjyr/2/

票数 25
EN

Stack Overflow用户

发布于 2018-08-01 16:21:13

代码可以通过使用阵列方法箭头函数进行简化

代码语言:javascript
运行
复制
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}`
));

有关详细信息,请参阅

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30399123

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档