我需要能够获取对象键的值。当我console.log(event);
返回一个对象时,我得到了:
MessageEvent {
ports: Array[0],
data: "{
"event":"playProgress",
"data":{
"seconds":0.419,
"percent":0.002,
"duration":177.813
}
}"
}
我似乎无法使用console.log(event.data.percent)
获得data.percent的值。我做错了什么?
答案 0 :(得分:3)
看起来event.data
实际上是一个字符串,而不是嵌套对象。使用“相当现代”的浏览器,您可以:
var data = JSON.parse(event.data);
console.log(data.percent);
可以在之前的stackoverflow answer上看到有关JSON.parse
的更多讨论。
答案 1 :(得分:0)
删除第一个数据对象周围的引号
MessageEvent {
ports: Array[0],
data: {
"event":"playProgress",
"data":{
"seconds":0.419,
"percent":0.002,
"duration":177.813
}
}
}
将它们留在你创建的字符串而不是obj
中答案 2 :(得分:0)
您需要在 MessageEvent对象中进入另一个级别才能访问第一个数据对象的子对象数据。 为了console.log,您甚至不需要进行字符串化然后解析对象,就像在这种情况下一样。
尝试以下:
var MessageEvent = {
ports: Array[0],
data: {
"event":"playProgress",
"data":{
"seconds":0.419,
"percent":2.002,
"duration":177.813
}
}
};
的console.log(的 MessageEvent.data.data.percent 强>);