1. 程式人生 > 其它 >JS/jQuery,給陣列新增不同的鍵值,或將鍵合併到值內生成新陣列

JS/jQuery,給陣列新增不同的鍵值,或將鍵合併到值內生成新陣列

技術標籤: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