我有一个JSON对象,它根据值而不是键按字母顺序排序。但是,当我使用_.each
将对象注入表单$select
时,对象将根据键使用它。有谁知道我怎么能防止这种情况。
var $select = $("#tunnel-list");
var tpl = _.template('<option value="<%= id %>"><%= name %></option>');
_.each(tunnels, function(name, index) {
console.log(name, index)
$select.append(tpl({id: index, name: name}));
});
答案 0 :(得分:1)
您可能正在讨论JavaScript对象,因为JSON是类似于JavaScript语法的数据的字符串表示。
如果您有对象,则无法保证其元素顺序。您只能使用需要更改数据结构的数组对其进行排序。
希望以下链接也能回答您的问题:Does JavaScript Guarantee Object Property Order?
答案 1 :(得分:0)
javascript对象只是键/值对的散列图,无法对其进行排序(与数组不同)。另一方面,你可以&#34;排序&#34;通过移动字符来文件上的JSON对象。 但是当你将JSON作为一个对象读出并将其加载到内存中时,你会丢失这个假的&#34; sortness&#34;并根据JS引擎的实现方式遍历它的关键字。
下划线_.each
函数只是一个for
循环的包装器,它在您的键/值对上运行并在它们上运行一个函数。你应该使用_.each
来遍历数组。
TL; DR:你不能对对象进行排序
但您可以做什么将值传输到数组并使用原生Array.prototype.sort函数对其进行排序。