【发布时间】:2021-05-16 12:58:28
【问题描述】:
我希望从forEach 返回,但forEach 不允许使用return 命令。
我有一个函数,我想传递一个object 和一个key。我想遍历该对象,直到某个键与函数参数中的键匹配,然后返回该键的值。
我已经建立了这个:
const iterate = (o, k) => Object.keys(o).forEach((key) => {
if (key === k) { console.log(o[key]); return o[key]; }
if (typeof o[key] === 'object') { iterate(o[key], k); }
return { "message": "error" };
});
(async () => {
const obj = { x1: { y1: { z1: 'a1' } } }; const keys = 'y1';
const data = await iterate(obj, keys);
console.log(data);
return data;
})();
但是底部的data 是未定义的。我认为问题是forEach 不允许return 语句。有人可以为此用例推荐更好的方法吗?
【问题讨论】:
-
使用
.map()而不是.forEach()将项目返回到新数组中。 -
找到密钥后使用
some提前退出。 -
@ScottMarcus 我尝试以
.map()开头,再次,它仍然返回 undefined ,除非它是数组中的父元素。 -
@gorak 我以为
.some()只能返回真/假,而不是对象的值?
标签: javascript node.js arrays loops object