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

How to iterate over an object in javascript with an unordered index

本文关键字:无序 索引 迭代 对象 javascript      更新时间:2023-09-26

我正在创建一个播放列表系统,其中每首歌都有一个唯一的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++)。数组函数(例如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函数:

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