按照数组顺序给对象重新组合成新对象

需求:按照后台返回的数组的顺序,和返回的对象的键值合成新的对象,便于渲染到页面上

 let obj={
        '213_tsxRaXuUEMXLEFWkp4bwKL': "2019-02-26",
        '2771_CGeEeRyBRdWWkK3ZAvGAWo': "充足",
        '5451_BMkcv5nT9XK2g6QBFjqYuH': ["测试部"],
        '6725_gNSy4ksbBGhVAhYdurThJL': "管理员",
        '7937_Sg4nvPG7qVrwrFwoBHexcj': "",
        '9166_yL68EB3pCT3DcZMD4QxR26': ''
        };//后台返回的键值对对象
//需要按照此数组顺序
let obj1=["213_tsxRaXuUEMXLEFWkp4bwKL",
 "6725_gNSy4ksbBGhVAhYdurThJL", 
 "5451_BMkcv5nT9XK2g6QBFjqYuH",
 "2771_CGeEeRyBRdWWkK3ZAvGAWo" ,
 "7937_Sg4nvPG7qVrwrFwoBHexcj",
 "9166_yL68EB3pCT3DcZMD4QxR26"]
//根据上面obj1的顺序取出dname,结合obj的键值合成新的对象
let info={
        '213_tsxRaXuUEMXLEFWkp4bwKL': {dname: "填写日期", field_id: "213_tsxRaXuUEMXLEFWkp4bwKL", id: "213_tsxRaXuUEMXLEFWkp4bwKL", dfield: "f5"},
        '2771_CGeEeRyBRdWWkK3ZAvGAWo': {dname: "今日完成工作", field_id: "2771_CGeEeRyBRdWWkK3ZAvGAWo", id: "2771_CGeEeRyBRdWWkK3ZAvGAWo",dfield: "f8"},
        '6725_gNSy4ksbBGhVAhYdurThJL': {dname: "填写人", field_id: "6725_gNSy4ksbBGhVAhYdurThJL", id: "6725_gNSy4ksbBGhVAhYdurThJL",dfield: "f6"},
        '7937_Sg4nvPG7qVrwrFwoBHexcj': {dname: "未完成工作", field_id: "7937_Sg4nvPG7qVrwrFwoBHexcj", id: "7937_Sg4nvPG7qVrwrFwoBHexcj",dfield: "f9"},
        '9166_yL68EB3pCT3DcZMD4QxR26': {dname: "备注", field_id: "9166_yL68EB3pCT3DcZMD4QxR26", id: "9166_yL68EB3pCT3DcZMD4QxR26",dfield: "f10"},
        '5451_BMkcv5nT9XK2g6QBFjqYuH': {dname: "所在部门", field_id: "5451_BMkcv5nT9XK2g6QBFjqYuH", id: "5451_BMkcv5nT9XK2g6QBFjqYuH",dfield: "f7"}
        }
       ,

解决方法:(哈哈,就是二次遍历,但是遍历的顺序要注意,才接触,所以不懂得可以试试反过来遍历,看到问题就长记性了)

 1、先遍历obj1,因为是按照obj1的顺序 

2、obj1里遍历obj对象 

3、判断obj的第i个键名是否和obj1[j]相等 

4、在判断里组合自己想要的数据结构

let arr = [];
 for(let j=0;j<obj1.length;j++){
      for (let i in obj){
            let obj2={}
            console.log('是否obj1[j]==i相等',j,obj1[j]==i)
             if(obj1[j]==i){
                  obj2.name=info[i].dname;
                  obj2.value=obj[i];
                  console.log('obj2 ',obj2)
                  arr.push(obj2)
          }
     }
 }
        console.log('arr  ',arr)

如有不足,望多交流沟通。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值