我需要以下列格式创建数组:
{"3":
{"label":"All i want for christmas",
"song":"Alliw_1405399165.mp3",
"name":"All i want for christmas"},
"4":
{"label":"Call your girlfriend robyn clip",
"song":"Gangnam_Style_2.m4a",
"name":"Call your girlfriend robyn},
"5":
{"label":"Gangnam style psy clip",
"song":"Samba_De_Janeiro-world_cup_for_jivebird.m4a",
"name":"Gangnam style psy clip"} }
我按照以下方式在ajax响应后填充这些值:
$.each(response.result, function(i,item){
label = item.name;
if((item.special_price < item.price)&&(item.special_price!=0) && (item.special_price!=null)) {
label += '- is Only '+ item.special_price + item.currencysymbol;
}
tmpsongList[item.product_id].push({'label': label,
'song': item.audiofile,
'name': item.name,
'tag': item.tag,
'song_path': item.audio_url});
});
但这导致以下错误未捕获的TypeError:无法读取未定义的属性'push'
我如何创建这样的数组。请帮我解决这个问题 感谢所有
答案 0 :(得分:1)
push
是数组上的一个方法(不是普通对象),它将传递给它的值放到数组的末尾。
您没有尝试在对象的末尾添加值,而是尝试将其分配给特定的索引。
tmpsongList[item.product_id] = { ...
答案 1 :(得分:0)
它不是一个数组,它是一个地图/对象。 var a = {}是一个对象/地图。 var a = []是一个数组。 在你的情况下,你需要
tmpsongList[item.product_id] = {'label': label,
'song': item.audiofile,
'name': item.name,
'tag': item.tag,
'song_path': item.audio_url};