javaScript两个数组转成一个键值对数组

问题描述

问题背景描述:
最近在做的一个项目:由于是我们前端要显示的数据是从别人平台查询出来的,我们只提供查询参数,和向他们发起查询请求,其他的任何东西都不是我们操作的,而他们返回呢直接放回一个二维数组,而且还是全中文返回,英文的字段…

这个前端 是由我来负责的 所以我来吐槽!!!!一下他们肯定是懒得写文档给
调用方解释这个字段什么什么意思,所以直接返回给调用方中文格式了
我们的后台其实也是可以转的,但是后台没转,直接给前端来转...
fuck(响应端)

模拟返回数据格式
给你们模拟下他们返回的数据格式:

{
  "error": 0,
  "description": "成功",
  "value": [
    {
      "tableName": "",
      "tableCnName": "",
      "deptId": "",
      "deptName": "",
      "columnCount": 17,
      "rowCount": 5416,
      "columns": [
        "身份证件号码",
        "姓名",
        "出生日期",
        "工作单位",
        "发放周期",
        "123类型",
        "发放标准",
        "始发年月",
        "终止年月",
        "123日期",
        "手机号码",
        "镇街",
        "来源",
        "更新时间",
        "是否监督对象",
        "多发周期",
        "多发金额"
      ],
      "rows": [
        [
          "4XXX68219XXXXXXX",
          "张三",
          "1913-02-02",
          null,
          " ",
          "模拟",
          150,
          "2010-07-01",
          "2012-07-01",
          "2010-08-08",
          null,
          "天津",
          "123发放表",
          "2019-05-10",
          null,
          23,
          3450
        ],
        [
          "4XXX68219XXXXXXX",
          "陈秀华",
          "1939-07-14",
          null,
          " ",
          "模拟",
          30,
          "2013-10-01",
          "2016-09-01",
          "2016-07-29",
          null,
          "北京",
          "123发放表",
          "2019-02-18",
          null,
          2,
          60
        ]
      ]
    }
  ]
}

我们前端用的是Layui的数据表格,这种格式Layui数据表格不能自动解析…Layui能解析的是[{}],这种对象数组键值对格式… 害 疫情在此 我也不敢多比比划划。行吧 还是我来解决吧!

两个数组转成一个键值对数组

因为很多页面需要用到,所以我写了个通用的

**
 * @effect 解析政数局返回的数据格式给layui的数据表格渲染
 * @param data 数组 
 * return [{...}]
 */
function GovernmentData (data) {
    if (!$.isArray(data)) {
        console.log(`传入的${data}不是数组`);
        return;
    }

    if (data.length <= 0) {
        console.log(`传入的${data}不能为空`);
        return;
    }

    let tableArrayObj = [];
    // 获取传进来的数组里面的属性
	for (let i = 0; i < data.length; i++) {  
	// 保证每个值都能被改造成键值对
		for (let j = 0; j < data[i].rows.length; j++) {
			let tableObj = {};
			// 开始改造,获取行列值的每一项,和行列名的每一项
			for (let k = i; k < data[j].rows[j].length; k++) {
				// 这句话的意思是 tableObj['列名'] = '列值'
				tableObj[data[i].columns[k]] = data[i].rows[j][k];
			}
			// 上面循环完就是行值和行列名匹配完成
			// 既然完成了直接push进去
			tableArrayObj.push(tableObj);
		}
	}
	// 我们这个是页面之间共用的 直接返回给调用方
	// 返回格式已成 [{},{},{},{}],,这样
    return tableArrayObj;
} 

至此收工.

改天配上图来,现在在家写的这篇文章,连不上他们的内网,拿不到数据,但我保证这些代码你贴上去保证就能用了!

数组里面有对象,对象里面有数组
在这里插入图片描述

经过上面代码改造为:
在这里插入图片描述

有用的话记得点赞哦!!!

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值