【发布时间】:2020-08-18 16:27:28
【问题描述】:
我正在为一款游戏制作一个练习工具,它可以帮助您学习如何用钢琴演奏歌曲,而我想要做的是让所有在 50 毫秒内按下的音符相互显示为“你必须把它们压在一起” 现在,这似乎正在工作,但是当我将歌曲的字符串传递给解析器时,它会改变数组的内容。我已经使用完全相同的方法来解析其他函数中的对象并且它按预期工作,这里不是,这是未解析数组的(部分)
[{"time":2937,"key":"Key2"},
{"time":2943,"key":"Key7"},
{"time":2949,"key":"Key0"},
{"time":4297,"key":"Key6"},
{"time":4306,"key":"Key11"},
{"time":4315,"key":"Key2"},
{"time":5547,"key":"Key5"},
{"time":5549,"key":"Key2"},
{"time":5554,"key":"Key7"},
{"time":7480,"key":"Key8"},
{"time":7814,"key":"Key9"},
这是解析后的
0: {time: 2943, key: "Key7"}
1: {time: 4297, key: "Key6"}
2: {time: 4306, key: "Key11"}
3: {time: 4315, key: "Key2"}
4: {time: 5547, key: "Key5"}
5: {time: 5549, key: "Key2"}
6: {time: 5554, key: "Key7"}
7: {time: 7480, key: "Key8"}
8: {time: 7814, key: "Key9"}
9: {time: 8158, key: "Key5"}
10: {time: 8166, key: "Key10"}
为什么会发生这种情况,我该如何解决? 代码是乱七八糟的:
console.log(song)
trainingSong = JSON.parse(song)
console.log(trainingSong)
【问题讨论】:
-
代码 sn-p 有问题 - JSON.parse() 需要一个字符串,而您将它传递给一个数组。在将歌曲传递给 JSON.parse() 之前,您可以在歌曲上调用 JSON.stringify()
-
第一个是字符串而不是数组,它是用于保存歌曲音符的 div 的 innerHTML
-
JSON.parse 不会重新排序数组。必须有别的东西。您需要提供minimal reproducible example。
标签: javascript html arrays json parsing