[英]Javascript sort an object by keys based on another Array?
JavaScript規范不要求對象鍵保持其順序,因此嘗試對它們進行排序並不安全。 實施標准取決於每種環境,每種瀏覽器的執行方式也不同。 我相信大多數現代瀏覽器都會按照先進先出的順序對鍵進行排序,但是由於它不是標准的一部分,因此在生產代碼中信任它並不安全。 在較舊的瀏覽器中也可能會中斷。 最好的選擇是將對象鍵放入一個數組中,對該數組進行排序,然后通過排序后的鍵訪問該對象的值。
var myObject = { d: 3, b: 1, a: 0, c: 2 },
sortedKeys = Object.getOwnPropertyNames(myObject).sort();
然后,可以根據需要將有序值映射到新數組中。
var orderedValues = sortedKeys.map(function (key) { return myObject[key]; });
正如QED2000指出的那樣,即使您創建一個新對象,也無法保證這些屬性將保持特定順序。 但是,您可以根據不同的數組對鍵進行排序。
<script>
function sortArrayByArray(a, b)
{
return order.indexOf(a) - order.indexOf(b);
}
var order = new Array('name', 'dob', 'address');
var customer = new Array();
customer['address'] = '123 fake st';
customer['name'] = 'Tim';
customer['dob'] = '12/08/1986';
customer['dontSortMe'] = 'this value doesnt need to be sorted';
var orderedKeys = Object.keys(customer).sort(sortArrayByArray);
orderedKeys.forEach(function (key) {
document.write(key + "=" + customer[key] + "<br/>");
});
</script>
輸出是
dontSortMe=this value doesnt need to be sorted
name=Tim
dob=12/08/1986
address=123 fake st
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.