You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript 求解两数之和时.map方法返回undefined的原因是什么

问题原因分析
  • 外层twoSum函数没有定义返回值:函数执行完所有逻辑后没有return任何内容,默认返回undefined。你内部给map回调函数写的return,只是把值返回给map方法用来生成新数组,完全不会传递到外层函数。
  • 对Array.map()的使用场景理解错误:map的设计目的是对原数组每一项做映射转换,返回长度和原数组完全一致的新数组,不是用来做条件查找的。哪怕你拿到map返回的数组,里面只有符合if条件的位置是你要的下标数组,其余所有元素都是undefined,也没法直接拿到目标结果。
  • 没有对map的返回结果做处理:你当前代码里调用了map,但完全没有接收它的返回值,也没有把这个值传递到外层return,相当于这部分逻辑执行完直接被丢弃了。
修正方案

你当前是暴力枚举的实现思路,不需要用map,替换成短路查找的方法更合适,修正后代码如下:

var twoSum = function (nums, target) {
    for (let i = 0; i < nums.length; i++){
        const num = nums[i];
        // 查找后半段数组中符合求和条件的元素下标
        const matchIndex = nums.slice(i+1).findIndex(element => num + element === target);
        if (matchIndex !== -1) {
            // 转换为原数组的全局下标直接返回
            return [i, i + 1 + matchIndex];
        }
    }
}

内容的提问来源于stack exchange,提问作者WYZku

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 14:54:00