數組類型:
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 如下: