foreach 返回undefined 留坑

Posted 那年

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了foreach 返回undefined 留坑相关的知识,希望对你有一定的参考价值。

封装方法 获取浏览器参数,但是使用了foreach 循环后,调用方法打印就是undefined
原代码:

export function getUrlParams(parNmae) {
  let pramSplitStr = location.hash.split("#/")[1].split("?")[1];
  if(!pramSplitStr) return;
  let resultParNameStr = pramSplitStr.split("&");
  resultParNameStr.forEach(el => {
    let pranItem = el.split(\'=\');
    if (parNmae == pranItem[0]) {
      return pranItem[1]
    } else {
      return null
    }
  })

解决替换成find 就好了

// 获取浏览器指定参数  (带hash的)
export function getUrlParams(parNmae) {
  let pramSplitStr = location.hash.split("#/")[1].split("?")[1];
  if(!pramSplitStr) return;
  let resultParNameStr = pramSplitStr.split("&");

 let ret = resultParNameStr.find(el => {
    let pranItem = el.split(\'=\');
    return parNmae == pranItem[0]

 })
  let handleOpt = ret.split(\'=\')
  return handleOpt[1]
}

forEach() 方法为每个数组元素调用一次函数(回调函数)。
原因:
forEach没有返回值,只针对每个元素调用func。
forEach()无法在所有元素遍历完前,终止遍历,或者return 跳出当前循环,
这样的话,使用return失效,空循环就会显示undefined

以上是关于foreach 返回undefined 留坑的主要内容,如果未能解决你的问题,请参考以下文章

在 Jquery 中使用 find 和 this 返回 undefined [重复]

js中 forEach 和 map 区别

foreach中使用return失效

JavaScript中Map和ForEach的区别

遍历forEach与map的区别-forEach踩坑记

JavaScript的map循环forEach循环filter循环