我試圖按照它的值使用loadash按字母順序排序對象。我的樣本對象是使用lodash按值排序對象
var object = {AB:'apple',AC:'cat', AD:'bannana', BA:'atom'};
和我想要得到的輸出如下:
Object = {AB: "apple", BA: "atom", AD: "bannana", AC: "cat"}
我試着用_.sortBy,但似乎並不奏效。
我試圖按照它的值使用loadash按字母順序排序對象。我的樣本對象是使用lodash按值排序對象
var object = {AB:'apple',AC:'cat', AD:'bannana', BA:'atom'};
和我想要得到的輸出如下:
Object = {AB: "apple", BA: "atom", AD: "bannana", AC: "cat"}
我試着用_.sortBy,但似乎並不奏效。
沒有這樣的東西排序對象的屬性。一個對象只是一組無序的密鑰< - >屬性對。
您可以使用對象的值創建一個數組並對它們進行排序。
正如lodash sortBy documentation所述,sortBy方法根據集合的值創建排序數組(即有序列表)。 我不確定它是否適合您的需求。請參閱下面的代碼片段,它使用您的對象作爲輸入值。
var object = {AB:'apple',AC:'cat', AD:'bannana', BA:'atom'};
var sortedValues = _.sortBy(object, function(value) { return value; });
console.log(sortedValues);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.14.1/lodash.min.js"></script>
編輯: 從你的評論,你需要獲得(鍵,值)對遍歷對的列表。 這是一個帶有排序數組的建議解決方案,用於ng-repeat
指令中。
angular.module('app', [])
.controller('appCtrl', function($scope) {
var object = {
AB: 'apple',
AC: 'cat',
AD: 'bannana',
BA: 'atom'
};
var pairs = _.map(object, function(value, key) {
return [key, value];
});
$scope.sortedPairs = _.sortBy(pairs, function(pair) {
return pair[1]; // ie. value
});
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.14.1/lodash.min.js"></script>
<div ng-app="app">
<ul ng-controller="appCtrl">
<li ng-repeat="pair in sortedPairs">
key: {{pair[0]}}, value: {{pair[1]}}
</li>
</ul>
</div>
無法排序的對象,但你可以將其轉換爲對和sortBy的數組,那麼:
const sorted = _.sortBy(_.toPairs(object), 1)
現在你已經有序陣列:
[
["AB", "apple"],
["BA", "atom"],
["AD", "bannana"],
["AC", "cat"]
]
那麼我怎樣才能得到它的關鍵,我需要使用這些鍵,值對ng重複在html – rUI7999
感謝您的答案,可能是我可以將此數組轉換爲一個鍵值對,那麼我就可以得到我的答案。 – rUI7999
您可以使用ng-repeat直接從sortedPairs數組中迭代,類似於'
- key:{{pair [0]}},value:{{pair [1]} }
' – zoom