码迷,mamicode.com
首页 > 编程语言 > 详细

JS 数组对象的某一项抽离出来放在外面

时间:2019-10-16 17:31:05      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:cti   obj   span   一个   对象   value   color   object   http   

数组类型:

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 如下:

技术图片

 

 技术图片

 

JS 数组对象的某一项抽离出来放在外面

标签:cti   obj   span   一个   对象   value   color   object   http   

原文地址:https://www.cnblogs.com/mmzuo-798/p/11686861.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!