首页 > 解决方案 > 当有一个内部循环时,地图没有返回数组

问题描述

const testTrue = sample.map((condition) => {
  return Object.values(objects).forEach(value => {
    return someFunc(condition.abc, value)
  })
});

sample 是一个数组,为什么上面的代码不让 testTrue 变成[ true, false ]?我没有定义,是因为这里的 forEach 吗?

这是有效的

const testTrue = sample.map((condition) => {
  return someFunc(condition.abc, value)
});

标签: javascriptarraysloopsecmascript-6

解决方案


实际上,Array#forEach()不返回任何内容,如果您查看Array#forEach()MDN 规范,您可以看到它ReturnValueundefined.

这就是为什么map调用在您的代码中没有返回任何元素的原因:

const testTrue = sample.map((condition) => {
  return Object.values(objects).forEach(value => {
    //The following will be ignored
    return someFunc(condition.abc, value)
  })
});

调用return someFunc(condition.abc, value)是无用的,就好像你没有写任何东西一样。

解决方案:

您可以通过调用来更改forEach()数组Array#map()的转换元素:

const testTrue = sample.map((condition) => {
  return Object.values(objects).map(value => {
    return someFunc(condition.abc, value)
  })
});

推荐阅读