从JavaScript中的最后一个元素开始倒数从数组A获取数组B的正确算法应该是什么?
请看以下二进制数组(数组A)-
const arr = [1,0,1,1,1,1,0,1,1];
当此数组通过函数传递时,例如sumRight(),它将产生以下输出数组(数组B)-
const output = [1,0,4,3,2,1,0,2,1];
了解功能
数组arr中的元素可以为0或1。该函数从数组arr的最后一个元素开始向后计数,如果数组arr中有连续的1,则输出数组中的对应元素将为1,但对于第二个连续的1数组arr为2。对于输入数组中的第3个元素,输出数组中的元素为3,但对于数组arr中的0,其输出数组中的元素也为0。
因此,让我们使用Array.prototype.reduceRight()方法编写此函数的代码,该方法的功能与普通的reduce方法相同,只是从右开始而不是从左开始-
示例
const arr = [1,0,1,1,1,1,0,1,1];
const sumRight = arr => {
return arr.reduceRight((acc, val) => {
const { prev, res } = acc;
if(val === 0){
return {
prev: 0,
res: res.concat(0)
};
};
return {
res: res.concat(val+prev),
prev: prev+1
};
}, {
prev: 0,
res: []
}).res.reverse();
};
console.log(sumRight(arr));输出结果
控制台中的输出将为-
[ 1, 0, 4, 3, 2, 1, 0, 2, 1 ]
热门推荐
10 祝孙辈生日祝福语简短
11 恋人跨年祝福语大全简短
12 考大学敬酒简短祝福语
13 开工投产大吉祝福语 简短
14 偶然结婚祝福语朋友简短
15 感谢学长学姐祝福语简短
16 戏精的祝福语简短
17 我要结婚祝福语简短
18 婚前女儿生日祝福语简短