javascript - 如何计算数组中从 JavaScript 中的最后一个到第一个的元素之间的差异?
问题描述
这是一个给定的数组:
arrayNum = [1, 2, 4, 5, 8, 9];
arrayS = [];
for(var i=1, len = array1.length; i<len; i++){
arrayS.push(arrayNum[i]-arrayNum[i-1]);
}
console.log(arrayS);
此代码计算每两个连续元素之间的差异!但是,我需要计算从最后一个元素到第一个元素之间的差异,在这种特殊情况下 9-8-5-4-2-1 = -11 会是什么?!
s1=0;
for(var j=array1[array1.length-1]; j>0; j--){
s1 = s1 - array1[j];
}
console.log(s1);
然而,这是行不通的!
解决方案
您可以使用Array.reduceRight()
来计算与数组末尾的差异。
注意:reduce/reduceRight 在减少没有初始值的空数组时会抛出错误。我使用三元来检查长度,如果为空则返回NaN
。
const fn = arr =>
arr.length ?
arrayNum.reduceRight((s, n) => s - n) // if array is not empty
:
NaN // if array is empty
const arrayNum = [1, 2, 4, 5, 8, 9];
const result = arrayNum.reduceRight((s, n) => s - n)
console.log(result);
要使 for 循环正常工作,您需要在s1
不设置值j
的情况下使用最后一个索引进行初始化。计算时s1
检查它是否未定义,并用当前数字对其进行初始化。如果不是,请减去当前数字:
const array1 = [1, 2, 4, 5, 8, 9];
let s1;
for (let j = array1.length - 1; j >= 0; j--) {
s1 = s1 === undefined ? array1[j] : s1 - array1[j];
}
console.log(s1);
推荐阅读
- python - np.flatten() 返回全零?
- android - Espresso 在@BeforeClass 之前开始活动
- node.js - Linkedin v2 API 图片上传得到错误 400 Bad Request
- discord.py - 随机图像发送者不和谐 py python 3.8
- android - 具有弯曲顶部边缘的 android 底板
- css - SVG 和暗模式在基于 chromium 的浏览器中无法正常工作
- python - 如何在 Ubuntu / Apache 中使用 cronjob 运行 python 脚本
- google-apps-script - 计算变量列中的值
- react-native - 反应本机博览会中的socket.io错误“boolean java.lang.Boolean.booleanValue()”
- android - Android屏幕旋转不生效