问答

用js刷leetcode第1题,forEach和for循环执行,返回结果为什么不

作者:admin 2021-05-15 我要评论

问题 用js刷leetcode第1题,forEach和for循环执行,返回结果为什么不一样,如下图代码 for循环 返回 [0,1] var nums = [2, 7, 11, 15], target = 9; var twoSum ...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

问题

用js刷leetcode第1题,forEach和for循环执行,返回结果为什么不一样,如下图代码

for循环

返回[0,1]

    var nums = [2, 7, 11, 15], target = 9;

    var twoSum = function (nums, target) {
      const map = new Map();
      for (let i = 0; i < nums.length; i++) {
        var n1 = nums[i]
        var n2 = target - n1;
        if (map.has(n2)) {
          return [map.get(n2), i]
        } else {
          map.set(n1, i)
        }
      }
    };

    var result = twoSum(nums, target)
    console.log('result', result)

forEach

返回 undefined

    var nums = [2, 7, 11, 15], target = 9;
    var twoSum = function (nums, target) {
      const map = new Map()
      nums.forEach((item, index) => {
        let n1 = nums[index];
        let n2 = target - n1
        if (map.has(n2)) {
          return [map.get(n2), index]
        } else {
          map.set(n1, index)
        }
      })
    };

    var result = twoSum(nums, target)
    console.log('result', result)
###

看return语句所在。
forEach的参数是个函数,return语句相当于结束这个函数的运行,并不是外层函数。外层函数相当于没有return语句,默认返回undefined

###
var nums = [2, 7, 11, 15], target = 9;
        var result = ''  //新增变量
        var twoSum = function (nums, target) {
        const map = new Map()
        nums.forEach((item, index) => {
            let n1 = nums[index];
            let n2 = target - n1
            if (map.has(n2)) {
                result =  [map.get(n2), index]  //修改
            } else {
            map.set(n1, index)
            }
        })
        };

        twoSum(nums, target)  //修改
        console.log('result', result)

第二个要这样写,原因楼上也说了

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • 请问下prometheus怎么进行自定义的按业

    请问下prometheus怎么进行自定义的按业

  • 节流函数为什么,点击无效,监听窗口大

    节流函数为什么,点击无效,监听窗口大

  • express访问静态资源失败

    express访问静态资源失败

  • IE 浏览器下 match 方法报错

    IE 浏览器下 match 方法报错

腾讯云代理商
海外云服务器