先看代码构造:

 console.log("历史音讯res",res)           for (let i = 0; i < res.result.length; i++) {           let theData = JSON.parse(res.result[i].payload);        theData.sendTime = res.result[i].ms;        console.log(`每个历史音讯${i}`,theData)        theData.sendHour = formatTimestamp(theData.sendTime).hour;        theData.sendMinute = formatTimestamp(theData.sendTime).minute;      }

数组构造:

数组内的对象构造:

{    "msg":"222222",    "avatar":"[https://hqjynanj.oss-cn-shenzhen.aliyuncs.com/web/skylive/images/live_user1.png](https://hqjynanj.oss-cn-shenzhen.aliyuncs.com/web/skylive/images/live_user1.png)",    "role":2,    "msgType":0,    "sendTime":1603942259000,    "uid":"1010561896",    "nickName":"23123"}

输入:

这里的逻辑能够看到,本来是想先输入theData再对theData加sendHour和sendMinute属性,然而发现这两个属性被提前加到了console的theData对象里。

这是为什么呢?

我想大略是这个起因,因为js看到你console这个对象,但前面又对这个对象进行了操作,所以会等你操作完再输入这个对象,这就导致了输入的后果和本人设想的不一样。能够加debugger,而后鼠标悬浮下来看实时的数据内容。

如果想长期输入这个theData对象,能够这么做,先转为字符串再转为对象输入,相似深拷贝的思维。这样程序执行到这里,就会立即输入。

 console.log(`每个历史音讯${i}`,JSON.parse(JSON.stringify(theData)))