需求:按照後臺返回的數組的順序,和返回的對象的鍵值合成新的對象,便於渲染到頁面上
javascript
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"}
}
,
複製代碼
解決方法:(哈哈,就是二次遍歷,可是遍歷的順序要注意,才接觸,因此不懂得能夠試試反過來遍歷,看到問題就長記性了)java
一、先遍歷obj1,由於是按照obj1的順序 數組
二、obj1裏遍歷obj對象 bash
三、判斷obj的第i個鍵名是否和obj1[j]相等 數據結構
四、在判斷裏組合本身想要的數據結構測試
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)
複製代碼