我正在创建一个播放列表系统,其中每首歌曲都有一个唯一的 ID。当您将歌曲添加到播放列表数组时,其索引将注册为其 ID。
通常在遍历 javascript 数组时,您会获取长度并通过索引进行计数。有没有办法循环使用未使用索引的数组?出于某种原因,这是不好的做法吗?
我正在创建一个播放列表系统,其中每首歌曲都有一个唯一的 ID。当您将歌曲添加到播放列表数组时,其索引将注册为其 ID。
通常在遍历 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++)
就可以使用a了。数组函数(例如pop
)不能用于它们,除非您定义它:
var array_like = {0:7, 1:5, 2:9, length:3};
您可以通过以下两种方式之一访问对象的属性。要么使用“。” 如:
var my prop = obj.property;
或通过括号表示法:
var my prop = obj["property"];
现在,这并不能真正回答你的问题。所以,这里有几个方法:
利用 jQuery 的 each 函数:
$.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]);
}