使用JavaScript的Map()方法实现数组元素相邻累加首尾相连
JavaScript 基于map方法实现环回相邻元素求和
实现逻辑
利用Array.prototype.map回调自带的当前索引、原数组入参,配合取模运算处理最后一个元素的边界问题,直接计算每个元素和下一个元素的和,最后一个元素自动匹配首元素求和。
可运行代码
// 示例原数组 const originalArr = [45, 4, 9, 16, 25]; // 转换逻辑 const convertedArr = originalArr.map((currentItem, index, arr) => { const nextIndex = (index + 1) % arr.length; return currentItem + arr[nextIndex]; }); console.log(convertedArr); // 输出:[49, 13, 25, 41, 70]
说明
- 取模运算
%用来处理索引溢出:当遍历到最后一个元素时,index + 1等于数组长度,对数组长度取模后得到0,刚好对应数组第一个元素的索引,完美符合首尾相加的要求。 - 全程仅使用
map方法完成转换,无额外遍历操作,时间复杂度为O(n)。
如果需要封装成可复用的函数,可以使用以下写法:
function getCyclicSumArray(arr) { if (!Array.isArray(arr)) return []; return arr.map((item, i, origin) => item + origin[(i + 1) % origin.length]); }
内容的提问来源于stack exchange,提问作者MûHammad UMar
相关产品推荐
相关产品推荐

