Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JavaScript中,如何优雅地创建数组元素差异列表?_Javascript_Arrays_Ecmascript 6_Functional Programming - Fatal编程技术网

在JavaScript中,如何优雅地创建数组元素差异列表?

在JavaScript中,如何优雅地创建数组元素差异列表?,javascript,arrays,ecmascript-6,functional-programming,Javascript,Arrays,Ecmascript 6,Functional Programming,我有一个数字列表,比如说numbers=[3,7,9,10],我想要一个列表 包含相邻元素之间的差异-必须有一个 较少元素-在给定情况下diff=[4,2,1] 当然,我可以创建一个新的列表,遍历输入列表并编译我的 手动生成结果 我正在寻找一种优雅/实用(更不用说蟒蛇式)的方法来实现这一点。 在Python中,您可以编写[j-i for i,j In-zip(t[:-1],t[1:])]或使用numpy 为了这个 JavaScript中是否也有reduce()/列表理解方法?您可以使用reduc

我有一个数字列表,比如说
numbers=[3,7,9,10]
,我想要一个列表 包含相邻元素之间的差异-必须有一个 较少元素-在给定情况下
diff=[4,2,1]

当然,我可以创建一个新的列表,遍历输入列表并编译我的 手动生成结果

我正在寻找一种优雅/实用(更不用说蟒蛇式)的方法来实现这一点。 在Python中,您可以编写
[j-i for i,j In-zip(t[:-1],t[1:])]
或使用
numpy
为了这个


JavaScript中是否也有
reduce()
/列表理解方法?

您可以使用
reduce
方法来实现这一点

const number=[3,7,9,10]
const res=numbers.reduce((r,e,i,a)=>i?r.concat(e-a[i-1]):r,[]);

log(res)
您可以对差异进行切片和映射

var编号=[3,7,9,10],
结果=数字。切片(1)。映射((v,i)=>v-数字[i]);

控制台日志(结果)您也可以在映射后弹出:

var编号=[3,7,9,10],
结果=数字.map((v,i)=>数字[i+1]-v);
result.pop()
控制台日志(结果)您可以切片(0作为开始,-1跳过最后一项)和映射,以便在序列中生成元素及其后续元素之间的差异:

const items=[3,7,9,10];

console.log(items.slice(0,-1).map((e,i)=>items[i+1]-e))
您可以使用
map
slice

const number=[3,7,9,10,11,13];
const res=numbers.map((num,index)=>numbers[index+1]-num).slice(0,-1);

console.log(res)
您可以使用解构赋值和递归-

const diff=([a,b,…more])=>
b==未定义
? []
:[b-a,…diff([b,…more])]
log(diff([3,7,9,10]))
// [ 4, 2, 1 ]
console.log(diff([3]))
// []
console.log(差异([]))

//[]
您是否考虑过使用类似于
lodash
的库?