gpt4 book ai didi

javascript - 按对象中的 ng-repeat (key, value) 对中的值排序

转载 作者:行者123 更新时间:2023-11-30 09:23:14 25 4
gpt4 key购买 nike

我是 AngularJS 的新手。使用 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>
</li>
</ul>

这根本行不通

https://jsfiddle.net/ak657soa/1/

 now is
--------------------
Soccer // id: 1
Tennis // id: 2
Basketball // id: 3
MMA // id: 4
Street dance // id: 5
Aerobics // id: 6
Aerial hoop // id: 7

should be
--------------------
Aerial hoop // id: 7
Aerobics // id: 6
Basketball // id: 3
MMA // id: 4
Soccer // id: 1
Street dance // id: 5
Tennis // id: 2

我尝试使用 underscore.js(我在不同的 View 中使用它)在 Controller 内部对它们进行排序,但随后我丢失了有关 ID 的信息。喜欢这里:https://jsfiddle.net/vmbme3yw/1/

我如何处理 AngularJs 中的 orderBy 值(键,值)对?

最佳答案

作为the documentation说,orderBy 需要一个 array 作为输入,而不是一个对象。

因此解决方案是将您的对象变成一个数组。您可以使用 reduce 方法通过传递一个 callback 函数作为 argument 来做到这一点。

$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]}));

现在您可以显示按 value 字段排序的项目。

<li ng-repeat="elem in sports | orderBy:'value'">
<a ng-href='/page/{{elem.id }}'>{{elem.value}}</a> // id: {{id}}
</li>

工作解决方案:

var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
$scope.sports = { 1: "Soccer", 2: "Tennis", 3: "Basketball", 4: "MMA", 5: "Street dance", 6: "Aerobics", 7: "Aerial hoop" };
$scope.sports = Object.keys($scope.sports).map((key) => ({id: key, value: $scope.sports[key]}));
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-controller="myCtrl" ng-app="myApp">
<ul>
<li ng-repeat="elem in sports | orderBy:'value'">
<a ng-href='/page/{{elem.id }}'>{{elem.value}}</a> // id: {{elem.id}}
</li>
</ul>
</div>

关于javascript - 按对象中的 ng-repeat (key, value) 对中的值排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50379798/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com