Javascript 按对象的ng repeat(键、值)对中的值排序
我是安格拉斯的新手。使用API,我获得了与运动相关的键值对Javascript 按对象的ng repeat(键、值)对中的值排序,javascript,angularjs,sorting,Javascript,Angularjs,Sorting,我是安格拉斯的新手。使用API,我获得了与运动相关的键值对 $scope.sports = { 1: "Soccer", 2: "Tennis", 3: "Basketball" ... }; 是否可以按运动项目名称对项目进行排序: <ul> <li ng-repeat="(id, value) in sports | orderBy:'value'"> <a ng-href='/page/{{id}}'>{{value}}</a>
$scope.sports = { 1: "Soccer", 2: "Tennis", 3: "Basketball" ... };
是否可以按运动项目名称对项目进行排序:
<ul>
<li ng-repeat="(id, value) in sports | orderBy:'value'">
<a ng-href='/page/{{id}}'>{{value}}</a>
</li>
</ul>
我试图在控制器中使用underline.js对它们进行排序(我在不同的视图中使用了它),但随后我丢失了有关ID的信息。就像这里:
如何处理AngularJs中的orderBy值,其中有(键,值)对?正如所说,orderBy需要一个数组作为输入,而不是一个对象
因此,解决方案是将对象转换为数组。您可以使用reduce
方法通过将回调函数作为参数传递来实现这一点
$scope.sports = Object.keys($scope.sports).reduce(function(arr,key){
arr.push({id: key, value: $scope.sports[key]})
return arr;
},[]);
此外,您还可以使用map
方法
$scope.sports = Object.keys($scope.sports).map((key) => ({id: key, value: $scope.sports[key]}));
现在,您可以按值
字段显示您订购的物品
<li ng-repeat="elem in sports | orderBy:'value'">
<a ng-href='/page/{{elem.id }}'>{{elem.value}}</a> // id: {{id}}
</li>
-
如前所述,orderBy需要一个数组作为输入,而不是一个对象
因此,解决方案是将对象转换为数组。您可以使用reduce
方法通过将回调函数作为参数传递来实现这一点
$scope.sports = Object.keys($scope.sports).reduce(function(arr,key){
arr.push({id: key, value: $scope.sports[key]})
return arr;
},[]);
此外,您还可以使用map
方法
$scope.sports = Object.keys($scope.sports).map((key) => ({id: key, value: $scope.sports[key]}));
现在,您可以按值
字段显示您订购的物品
<li ng-repeat="elem in sports | orderBy:'value'">
<a ng-href='/page/{{elem.id }}'>{{elem.value}}</a> // id: {{id}}
</li>
-
如果代码使用map
而不是reduce
,那么代码的可读性会更高。感谢您的回答不仅是一个解决方案,而且写得很好:d如果代码使用map
而不是reduce
,那么代码的可读性会更高。感谢您的回答不仅仅是一个解决方案,但是写得很明白:D