我正在创建一个播放列表系统,每首歌曲都有一个唯一的ID。当你将一首歌曲添加到播放列表数组中时,它的索引就被注册为它的ID。
通常情况下,在循环javascript数组时,您会获取长度并通过索引递增。是否有一种方法可以循环未使用索引的数组?这样做是否有任何不良实践的原因?
通常情况下,在循环javascript数组时,您会获取长度并通过索引递增。是否有一种方法可以循环未使用索引的数组?这样做是否有任何不良实践的原因?
var obj = {"123": "Lalala",
"456": "dum dum"};
for(var i in obj){
//i = ID
// obj[i] = "song"
}
使用for(var i in obj)
循环遍历对象。请查看上面的注释以理解此for
语句的含义。
顺便说一下,您所说的是对象,而不是数组:
var array = [7, 5, 9];
您可以通过这种方式模拟数组,以便可以使用 for(var i=0; i<array_like.length; i++)
。除非您定义它,否则无法对其使用数组函数(例如 pop
):
var array_like = {0:7, 1:5, 2:9, length:3};
var my prop = obj.property;
或通过括号表示法:
var my prop = obj["property"];
$.each(obj, function(key, value){
//Do something with your key and value.
});
使用JavaScript编写函数:
for(var key in obj)
{
var value = obj[key];
//Do something with your key and value.
}
您也可以使用for each
来仅迭代属性值:
var obj = {"key1": "val1",
"key2": "val2"};
for each(var value in obj) {
....
}
但在这种情况下,您无法访问属性名称。
array['id1'] = 'val1';
array['id2'] = 'val2';
array['id3'] = 'val3';
您可以使用以下方式迭代值:
for (var id in array) {
document.write(id + ' – ' + array[id]);
}
.length
和[]
之间确实有联系,所以我错了。但是我最初的观点是Array
具有连续的数字索引,这一点仍然成立。事实上,.length
会自动增加以“适应”新的更高整数键,这只能进一步证明这一点。 - Lightness Races in Orbit