JS/jQuery,給陣列新增不同的鍵值,或將鍵合併到值內生成新陣列
阿新 • • 發佈:2021-02-02
技術標籤:jQueryjavascriptjqueryhtml
JS,jQuery,給陣列新增不同的鍵值
由於專案需要,遇到了伺服器返回過來的資料是沒有鍵值的陣列,所以要進行處理,這就寫了以下的這個demo
上面伺服器返回的資料
要把它改成每組都帶有鍵值的,而且鍵的,而且值就在值裡面,
已知第一個值的鍵是不同的,第二個鍵是sourse
// demo沒有伺服器,就手動寫一下原始陣列 var arr = [ ["imsi:123456666", "備註2021年1月7日18:01:11"], ["imsi:23344343243", "備註2021年1月7日18:00:44"], ["msisdn:43243243243", "備註2021年1月7日18:00:44"], ["imei:4324325657", "備註2021年1月7日18:00:44"] ] console.log(arr) var res = [] //做個迴圈,一個個判斷一下 for (var i = 0; i < arr.length; i++) { //將每一個數組的第一個值取出來,冒號前面是鍵值所以這邊要拆分 var type = arr[i][0].split(':') //拆分之後,寫成帶鍵值的陣列,鍵值不同所以要判斷處理下 //不需要判斷和拆分的話直接可以輸出 if (type[0] == 'msisdn') { var listdata = { msisdn: type[1], sourse: arr[i][1], }; } else if (type[0] == 'imei') { var listdata = { imei: type[1], sourse: arr[i][1], }; } else if (type[0] == 'imsi') { var listdata = { imsi: type[1], sourse: arr[i][1], }; } else if (type[0] == 'mac') { var listdata = { mac: type[1], sourse: arr[i][1], }; } //處理完放進準備好的空陣列 res.push(listdata) } //迴圈完畢就完成了 console.log(res)
處理完成,看看輸出結果
這樣取值就會方便很多
反向操作一下,如果上傳伺服器只需要兩個值,不帶鍵的話,處理就比較簡單
//反向處理一下 //如果傳到伺服器的值需要把鍵和值合併處理的話,就用以下方法 var newarr = [{ msisdn: "12344555", source: "備註2021年1月7日18:01:11" } , { msisdn: "2313132", source: "備註2021年1月7日18:00:44" } , { msisdn: "4234243242", source: "備註2021年1月7日18:00:44" } , { msisdn: "3131231233", source: "注2021年1月7日18:00:44" }] //先取出鍵值 var aaa = Object.keys(newarr[0])[0] //再拿對鍵對應的值 var bbb = newarr[0][Object.keys(newarr[0])[0]] //合併成新的字串 var ccc = aaa + ":" + bbb //直接單行寫法 //var ccc = Object.keys(newarr[0])[0] + ':' + newarr[0][Object.keys(newarr[0])[0]] //單個輸出看看 console.log("aaa= "+aaa) console.log("bbb= "+bbb) console.log("ccc= "+ccc) //全部處理的話就寫一個迴圈 var nRes=[] for (var i = 0; i < newarr.length; i++) { var ccc = Object.keys(newarr[i])[0] + ':' + newarr[i][Object.keys(newarr[i])[0]] //陣列第二個值的鍵是統一的就不處理了,直接放 var ddd = newarr[i].source var listdata = [ccc, ddd] nRes.push(listdata) } //輸出看看 console.log(nRes)
單個輸出是這樣的
可以看到每個陣列的鍵和值都單獨取出來了,然後就普通的合併起來
迴圈效果輸出預覽,這樣就變回一開始拿到的陣列了
希望能幫到大家快速完成工作吧:-D