如何从两个数组生成每个关键字对应所有语言的对象数组?
解法:生成数组笛卡尔积对象列表
要实现每个关键字对应所有语言的对象数组,你可以用 flatMap 结合 map 来完成——普通 map 之所以不行,是因为它只能返回和原数组长度一致的结果,无法展开多语言对应的多个对象。
代码实现
原数组定义:
const keywordList = ['test','123']; const langList = ['en','fr'];
生成目标数组:
const keywords = keywordList.flatMap(keyword => { return langList.map(lang => ({ keyword, lang })); });
执行后得到的结果就是你需要的结构:
[ { keyword: "test", lang: "en" }, { keyword: "test", lang: "fr" }, { keyword: "123", lang: "en" }, { keyword: "123", lang: "fr" } ]
原理说明
flatMap 会先对每个关键字执行 map 操作,生成该关键字对应所有语言的对象数组,随后自动将这些子数组展开合并成一个一维数组,正好满足「每个关键字对应所有语言」的需求。
你也可以用 reduce 来实现相同效果:
const keywords = keywordList.reduce((result, keyword) => { langList.forEach(lang => { result.push({ keyword, lang }); }); return result; }, []);
内容的提问来源于stack exchange,提问作者user11302458
相关产品推荐
相关产品推荐

