Underscore _.each 函数 - 按值而不是键排序
Underscore _.each function - sorting by value not key
我有一个 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}));
});
您可能在谈论 JavaScript 对象,因为 JSON 是数据的字符串表示形式,类似于 JavaScript 语法。
如果您有对象,则无法保证其元素顺序。您只能使用需要更改数据结构的数组对其进行排序。
希望以下 link 也能回答您的问题:Does JavaScript Guarantee Object Property Order?
一个javascript对象只是一个key/value对的hashmap,它不能被排序(不像一个数组)。另一方面,您可以通过移动字符来 "Sort" 一个文件上的 JSON 对象。
但是,当您将 JSON 作为对象读取并将其加载到内存中时,您会丢失这个伪造的 "sortedness" 并根据 JS 引擎的实现方式遍历它的键。
下划线 _.each
函数只是一个 for
循环的包装器,该循环遍历 key/value 对并在它们上运行一个函数。你应该使用 _.each
来遍历数组。
TL;DR : 你不能对对象进行排序
但是您可以将值传输到数组并使用本机 Array.prototype.sort 函数对其进行排序。
我有一个 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}));
});
您可能在谈论 JavaScript 对象,因为 JSON 是数据的字符串表示形式,类似于 JavaScript 语法。
如果您有对象,则无法保证其元素顺序。您只能使用需要更改数据结构的数组对其进行排序。
希望以下 link 也能回答您的问题:Does JavaScript Guarantee Object Property Order?
一个javascript对象只是一个key/value对的hashmap,它不能被排序(不像一个数组)。另一方面,您可以通过移动字符来 "Sort" 一个文件上的 JSON 对象。 但是,当您将 JSON 作为对象读取并将其加载到内存中时,您会丢失这个伪造的 "sortedness" 并根据 JS 引擎的实现方式遍历它的键。
下划线 _.each
函数只是一个 for
循环的包装器,该循环遍历 key/value 对并在它们上运行一个函数。你应该使用 _.each
来遍历数组。
TL;DR : 你不能对对象进行排序
但是您可以将值传输到数组并使用本机 Array.prototype.sort 函数对其进行排序。