JS 數組對象的某一項抽離出來放在外面


數組類型:

shamDeviceData: [
        {
          "projectKey":"5555",
          "productKey":"55555555",
          "deviceId":"555555555",
          "deviceName":"55555555",
          "imei":"5555555",
          "devReturnAlarmList":[{
            "statusCode":"55555",
            "statusValue":"5555",
            "alarmDesc":"5555",
            "alarmType": '1'
          }]
        },
        {
          "projectKey":"6666666",
          "productKey":"6666",
          "deviceId":"6666",
          "deviceName":"helo",
          "imei":"how are you",
          "devReturnAlarmList":[
            {
              "statusCode":"6666",
              "statusValue":"6666",
              "alarmDesc":"8888888",
              "alarmType": '1'
            },
            {
              "statusCode":"67677677",
              "statusValue":"676767",
              "alarmDesc":"99999",
              "alarmType": '1'
            },
            {
              "statusCode":"67677677",
              "statusValue":"676767",
              "alarmDesc":"tttttttt",
              "alarmType": '1'
            }
          ]
        },
        {
          "projectKey":"777777",
          "productKey":"777777",
          "deviceId":"77777",
          "deviceName":"77777",
          "imei":"77777",
          "devReturnAlarmList":[]
        }
      ],

思路:

1. 把 devReturnAlarmList 數組里面的每一項拿到外面來,重新生成一個新數組,如果devReturnAlarmList有多項,則生成多個數組

2. 合並新對象  { }一定要寫

Object.assign({},item, item.devReturnAlarmList[num])

解決:

this.shamDeviceData.forEach((item,i) => {
            if (item.devReturnAlarmList.length) {
              if (item.devReturnAlarmList.length) {
                for (let i = 0; i < item.devReturnAlarmList.length; i++) {
                  (function(num) {
                    _this.handleShamDeviceData.push(Object.assign({},item, item.devReturnAlarmList[num]))  // 這里一定要注意,拼接成新對象{},不然item.devReturnAlarmList[num]始終取的是最后一個值,閉包沒生效
                  })(i)
                }
              }
            } else {
              this.handleShamDeviceData.push(item)
            }
          })
          console.log(this.handleShamDeviceData)

 

打印的 handleShamDeviceData 如下:

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM