如何用ES6语法将含嵌套键的对象转换为对象数组
用ES6语法转换错误对象为指定格式数组
原始输入对象
const originalData = { "3": { name: ["Missing data for required field."], }, "5": { id: ["Same id exist."], }, };
目标输出数组
const targetData = [ { key: "name", message: "Missing data for required field.", row: 3, }, { key: "id", message: "Same id exist.", row: 5, }, ];
ES6实现代码
const convertedData = Object.entries(originalData).flatMap(([rowStr, errors]) => { const row = Number(rowStr); return Object.entries(errors).flatMap(([key, messages]) => { return messages.map(message => ({ key, message, row })); }); });
逻辑拆解
Object.entries(originalData):把原始对象转成[行号字符串, 该行错误对象]的键值对数组,实现逐行遍历错误- 外层
flatMap:将每行处理后的结果直接合并成一维数组,避免产生嵌套数组 - 把行号字符串转为数字类型,匹配目标格式中
row的数值类型要求 Object.entries(errors):遍历当前行的所有错误字段,拿到字段名和对应的错误消息数组- 内层
flatMap+map:将每个错误消息单独转成目标格式的对象,哪怕一个字段有多条错误,也能生成对应的多个对象
内容的提问来源于stack exchange,提问作者Aniruddha
相关产品推荐
相关产品推荐

