先看代码结构:
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)))
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。