我试图按照它的值使用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