如何将JSON数组数据转换为键值对格式以适配API使用
数组转JSON键值对对象实现方法
你当前使用的reduce遍历写法已经可以满足转换需求,直接运行即可输出你需要的目标格式:
// 定义表头列名数组 var columns = ["ID", "Name", "Age"]; // 定义对应行数据数组 var rows = ["212", "David", "38"]; // 遍历行数据,按索引匹配表头生成键值对 var result = rows.reduce(function(result, field, index) { result[columns[index]] = field; return result; }, {}) console.log(result); // 输出 {"ID":"212","Name":"David","Age":"38"}
如果后续需要处理批量多行数据的场景,也可以扩展为以下写法,适配多组行输入的情况:
// 源数据格式:第一项为表头,后续为行数据 var sourceData = [["ID","Name","Age"],["212","David","38"],["213","Lisa","25"]]; var columns = sourceData[0]; var resultList = sourceData.slice(1).map(row => { return row.reduce((res, field, index) => { res[columns[index]] = field; return res; }, {}) }) console.log(resultList); // 输出 [{"ID":"212","Name":"David","Age":"38"},{"ID":"213","Name":"Lisa","Age":"25"}]
如果你的原始输入是未补全结构的字符串形式,需要先做一次JSON解析处理:
// 原始字符串输入 var rawStr = '["ID","Name","Age"],["212","David","38"]'; // 补全为合法JSON数组后解析 var sourceArr = JSON.parse(`[${rawStr}]`); var columns = sourceArr[0]; var rows = sourceArr[1]; // 后续执行reduce逻辑即可
内容的提问来源于stack exchange,提问作者LuisFRN
相关产品推荐
相关产品推荐

