js 对象数组矩阵转置(行到列)练习
最编程
2024-03-16 21:08:43
...
transformDatas = (tableRows) => { if (!tableRows.length) return console.log("tableRows ", tableRows) let tansDatas = [] for(let i = 0; i < tableRows.length; i++){ let item = tableRows[i] if(i===0){ let keys = Object.keys(item) tansDatas.push(keys) } let values = Object.values(item) tansDatas.push(values) } console.log("tansDatas ", tansDatas) //二维数组行转列 var newArray = tansDatas[0].map(function (col, i) { return tansDatas.map(function (row) { return row[i]; }) }); console.log("newArray", newArray) //二维数组重新生成新的对象数组 let keyRow = newArray[5]//已行转列后,然后以其中任意一行作为新数组中每个对象的key let tansformNewData = [] for(let j= 0;j< newArray.length;j++){ let obj = {} for(let k=0;k<keyRow.length;k++){ obj[keyRow[k]+""] = newArray[j][k] } tansformNewData.push(obj) } console.log("tansformNewData", JSON.stringify(tansformNewData)) return tansformNewData } let tableRows = [ {"id":2,"createAt":1567055846000,"updateAt":1567055846000,"companyId":1,"frequency":"YEARLY","periodEnd":1567008000000,"netIncome":534,"depreciation":34,"adjustment":321,"changeAcc":563,"changeLiab":4566,"changeInv":33,"changeOther":98,"totalOpr":6778,"capitalExp":88,"investments":99,"otherInv":8,"totalInv":67,"dividePaid":664,"purchase":443,"netBorrow":2,"otherFinance":34,"totalFinance":56,"effectChange":null,"changeEqui":78}, {"id":5,"createAt":1567117746000,"updateAt":1567117746000,"companyId":1,"frequency":"YEARLY","periodEnd":1535558400000,"netIncome":53,"depreciation":3,"adjustment":2,"changeAcc":2,"changeLiab":3,"changeInv":235,"changeOther":435,"totalOpr":3,"capitalExp":34,"investments":34,"otherInv":34,"totalInv":53,"dividePaid":34,"purchase":34,"netBorrow":34,"otherFinance":34,"totalFinance":66,"effectChange":null,"changeEqui":66,} ] transformDatas(tableRows)
推荐阅读