gpt4 book ai didi

javascript - 如何按顺序(不是索引)迭代类似数组的对象?

转载 作者:行者123 更新时间:2023-11-30 08:52:04 25 4
gpt4 key购买 nike

我有一些 JSON 数据:

{  
"113":{"id":"113","title":"Coal","hex":"4f4f4f"},
"116":{"id":"116","title":"White","hex":"fdfbf7"},
"115":{"id":"115","title":"Greylead","hex":"b3b3b3"}
}

它在我可以像这样访问的数据属性的标记中:

var arr = $("#element).data('arr');

然后对每个项目进行处理。像这样:

$.each( arr, function( index, obj ){ 
console.log( obj.title + ' is #' + obj.hex );
}

但是数据中项目的顺序没有被保留。

$.each 似乎按数据中每个项目的前导编号进行迭代,而不是项目实际在数组中的顺序。我以数字顺序 113、115、116 而不是 113、116、115(这是数据中项目的实际顺序)得到我的输出。

我如何遍历实际订单中的项目?

最佳答案

如果顺序对您很重要,请使用普通数组:

[
{"key": "113", "id":"113","title":"Coal","hex":"4f4f4f"},
{"key": "116", "id":"116","title":"White","hex":"fdfbf7"},
{"key": "115", "id":"115","title":"Greylead","hex":"b3b3b3"}
]

然后简单循环:

for (var i = 0; i < arr.length; i++) {
var obj = arr[i];
console.log( obj.title + ' is #' + obj.hex );
}

Live test case .

如果你想根据它的键搜索项目,你现在必须遍历所有项目才能找到它。为了提高效率,您可以创建额外的“映射器”对象:

var mapper = {};
for (var i = 0; i < arr.length; i++) {
var obj = arr[i];
mapper[obj.key] = obj;
}

然后根据键查找项目:

key = "115";
if (mapper[key]) {
//exists...
}

Updated fiddle .

关于javascript - 如何按顺序(不是索引)迭代类似数组的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17009747/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com