首页 > 解决方案 > 从函数内的 forEach 内的 if 语句返回

问题描述

我编写了一个小函数,它迭代一个多维对象,如果在两个变量之间找到匹配项,则应该返回结果。

这是我的完整功能:

function getData(config) {
  var code = "GB";

  return Object.keys(config).forEach(function(country) {
    if( Object.keys(config[country]).toString() === code ) {
      return config[country][code]; // { data: "my correct matching data" }
    }
  });
}

在最深点进行测试return,我可以看到config[country][code]输出了我期望的结果。伟大的!找到了一个匹配项config[country]code所以我想返回它。

然而,作为一个整体的函数返回undefined,但即使设置较浅的深度return将结果存储为变量,并检查它的值,我也得到了undefined. 似乎虽然找到了匹配,但它没有正确返回,请参阅下面的调整功能:

function getData(config) {
  var code = "GB";

  var result = Object.keys(config).forEach(function(country) {
    if( Object.keys(config[country]).toString() === code ) {
      return config[country][code]; // { data: "my correct matching data" }
    }
  });

  return result; // undefined
}

任何想法为什么结果没有完全返回?我猜我错过了某个地方的回报。

标签: javascriptobjectreturnreturn-value

解决方案


推荐阅读