繁体   English   中英

如何使用无序索引迭代javascript中的对象

[英]How to iterate over an object in javascript with an unordered index

我正在创建一个播放列表系统,每首歌都有一个唯一的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 statement的含义。

顺便说一下,你在谈论的是对象,而不是数组:

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"];

现在,这并没有真正回答你的问题。 所以,这里有几种方法:

利用jQuery的每个功能:

$.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]);
} 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM