我正在使用以下JSON使用JavaScript创建一些复选框。
{"5":"5.5\" x 8.5\"",
"11":"7\" x 10\"",
"4":"8.5\" x 11\"",
"8":"8.5\" x 14\"",
"12":"10\" x 7\"",
"2":"11\" x 8.5\"",
"10":"11\" x 17\"",
"6":"14\" x 8.5\"",
"9":"17\" x 11\""})
创建这些复选框的JavaScript是:
for(id in dimensions) {
$("#the_dimensions").append('<label class="checkbox">' +
'<input type="checkbox" class="dimensions-filter" value="' + id + '">' +
dimensions[id] + '</label>');
}
在Firefox上,根据JSON对象中的顺序创建复选框。所以,&#34; 5&#34;:&#34; 5.5 \&#34; x 8.5 \&#34;&#34;成为第一个元素,&#34; 11&#34;:&#34; 7 \&#34; x 10 \&#34;&#34;成为第二个元素,等等。
但是在Chrome和IE上,JSON对象会按照键的升序自动排序。所以,&#34; 2&#34;:&#34; 11 \&#34; x 8.5 \&#34;&#34;成为第一个元素,&#34; 4&#34;:&#34; 8.5 \&#34; x 11 \&#34;&#34;成为第二个元素,等等。
如何在Chrome和IE上禁用自动排序?
答案 0 :(得分:12)
这里也有同样的问题。我的JSON对象看起来像这样:
{
"15" : { "name" : "abc", "desc" : "Lorem Ipsum" },
"4" : { "name" : "def", "desc" : "Foo Bar Baz" },
"24" : { "name" : "ghi", "desc" : "May be" },
"8" : { "name" : "jkl", "desc" : "valid" }
}
对象按服务器上的名称排序(A-Z词汇表),我想用以下内容呈现列表:
var data = myObject, i;
console.log(data);
for (i in data) {
if (data.hasOwnProperty(i)) {
// do stuff
}
}
Chrome日志:
Object {4: Object, 8: Object, 15: Object, 24: Object}
我的for-in循环导致错误的排序。它会自动按浏览器排序,但我需要ID。
我的解决方案:
我决定用带前缀的下划线更改键。我的目标现在看起来:
{
"_15" : { "name" : "abc", "desc" : "Lorem Ipsum" },
"_4" : { "name" : "def", "desc" : "Foo Bar Baz" },
"_24" : { "name" : "ghi", "desc" : "May be" },
"_8" : { "name" : "jkl", "desc" : "valid" }
}
Chrome现在登录:
Object {_15: Object, _4: Object, _24: Object, _8: Object}
我的清单正确无误。