在 JavaScript 中,从数组 A 的最后一个元素开始倒数,获取数组 B 的正确算法是什么?
javascriptweb developmentobject oriented programming更新于 2025/10/12 23:08:17
考虑以下二进制数组(数组 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,但对于数组 arr 中的第二个连续 1,它将为 2。对于输入数组中的第三个,输出数组中的元素将为 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 ]
相关文章
有用资源
javascript 参考教程 - 该教程包含有关 javascript 的更多信息:https://www.cainiaomax.com/javascript/

