TypeScript中如何将含数组值的对象转为单个键值对集合
TypeScript 对象转指定格式方案
可以通过Object.entries()配合flatMap和map实现需求,以下是具体代码方案:
1. 定义原数据
const fruits = { Apple: ['Doctor', 'Keep', 'away'], Orange: ['sour', 'sweet'], Guava: ['sweet', 'seeds'], Kiwi: ['Sour', 'VitaminC'] };
2. 转换逻辑
// 生成目标格式的数组 const formattedArray = Object.entries(fruits).flatMap(([fruitName, values]) => { return values.map(value => `[${fruitName}:${value}]`); }); // 若需要拼接为连续字符串形式 const formattedString = formattedArray.join(',');
3. 代码解释
Object.entries(fruits):将原对象转换为键值对数组,结构为[['Apple', ['Doctor', ...]], ['Orange', ['sour', ...]], ...]flatMap:遍历每个键值对,同时将内层map生成的数组扁平化,避免得到嵌套数组- 内层
map:将每个水果的属性值转换为[水果名:属性值]的字符串格式
4. 输出结果
formattedArray的内容:
["[Apple:Doctor]", "[Apple:Keep]", "[Apple:away]", "[Orange:sour]", "[Orange:sweet]", "[Guava:sweet]", "[Guava:seeds]", "[Kiwi:Sour]", "[Kiwi:VitaminC]"]
formattedString的内容:
[Apple:Doctor],[Apple:Keep],[Apple:away],[Orange:sour],[Orange:sweet],[Guava:sweet],[Guava:seeds],[Kiwi:Sour],[Kiwi:VitaminC]
补充:使用Map实现的方案
如果一定要用Map,也可以先将对象转为Map再处理:
const fruitMap = new Map(Object.entries(fruits)); const formattedFromMap = Array.from(fruitMap).flatMap(([fruitName, values]) => { return values.map(value => `[${fruitName}:${value}]`); });
内容的提问来源于stack exchange,提问作者sun shine
相关产品推荐
相关产品推荐

