JavaScript 数组取中间两数求和出现字符串拼接问题如何解决
你的实现思路针对长度为6的偶数数组是可行的,排序逻辑、下标选取逻辑在固定数组长度的场景下没有问题。
你遇到的数值变成字符串拼接的问题,根源是DraftsApp环境中你拿到的numArray元素实际为字符串类型,+运算符在两侧存在字符串类型值时会默认执行拼接逻辑,你通过Number()强制转换为数值类型再做加法的修复方案是正确的,也可以用隐式转换写法var sum = +numArray[2] + +numArray[3]实现相同效果。
可以用Array.reduce实现该需求,通用写法如下,适配任意偶数长度的数组:
var numArray = [2, 1, 3, 1, 4, 2]; const sortedArray = numArray.sort((a, b) => a - b); const arrLength = sortedArray.length; const midSum = sortedArray.reduce((accumulator, currentValue, index) => { // 偶数长度数组的两个中间元素下标为 arrLength/2 -1 与 arrLength/2 if (index === arrLength/2 - 1 || index === arrLength/2) { return accumulator + Number(currentValue); } return accumulator; }, 0);
这个写法不需要手动写死下标,数组长度变化后也能正常取到中间两个值求和。
内容的提问来源于stack exchange,提问作者slyfox
相关产品推荐
相关产品推荐

