如何在ng选项中对AngularJS中的数组进行排序?

如何在ng选项中对AngularJS中的数组进行排序?,angularjs,Angularjs,我有一个简单的数组: $scope.myArray = ['3', '1', '2', '4']; 在我的模板中,我使用ng options创建一个选择列表: <select ng-options="key as value for (key, value) in myArray | orderBy : '-value'"></select> 但按-value排序不起作用。如何按降序排列此数组 {{ orderBy_expression | orderBy : e

我有一个简单的数组:

$scope.myArray = ['3', '1', '2', '4'];
在我的模板中,我使用
ng options
创建一个选择列表:

<select ng-options="key as value for (key, value) in myArray | orderBy : '-value'"></select>

但按
-value
排序不起作用。如何按降序排列此数组

{{ orderBy_expression | orderBy : expression : false}}

解决方案是否更详细?您可以使用订单功能。您正在使用“字符串”作为int。如果你真的想这样做,下面的方法就行了。如果您不知道,您可以删除
parseInt
并使用该项。我还将您的
键匹配为值
您不需要这些。您只需对数据中的值执行
值操作

<div ng-app="myapp">
<fieldset ng-controller="FirstCtrl">
    <select 
        ng-options="key as value for (key, value) in data | orderBy :orderFunc"
        ng-model="selectedId"></select>

    {{ selectedId }}
</fieldset>
</div>

orderBy参数可以是一个属性,因此您可能只需要:

<select ng-options="key as value for (key, value) in myArray | orderBy: '-toString()'">


请参见示例,这里有一个解决方案。其思想是在反转数组之前使用slice()创建数组的副本。这样可以避免修改原始数据:

 <select data-ng-model="data_selected" data-ng-options="key for key in data.slice().reverse()"></select>

在哪里
$scope.data=[“1”、“2”、“3”、“4”、“5”、“6”、“7”、“8”、“9”、“10”、“11”、“12”、“13”、“14”、“15”、“16”、“17”]
这是这里唯一可行的解决方案。谢谢本,看到其他答案,我几乎失去了对人性的信心…@AlexandreNucera什么不起作用?我提供的示例在select中按相反的顺序对提供的字符列表进行排序,我认为这就是OP的目标?@BenHeymink,是的,你是对的,我的错。他只想反转数组,而不是按值排序。我喜欢这个解决方案。我们只需要问题作者提供更多的精确性。@Faud再说一遍,你必须解释你想要如何排列你的数组。数字和西里尔字母的集合并没有自然的顺序,我很确定你们实际上不能使用“value”变量。我的意思是:“数据”orderBy:“-value”将无法正常工作?因为value是一个ng repeat变量,并且过滤器应用于全局数组。我更新了一个fiddle,但从未更新过post。对不起,这个主意不错。我会用一个过滤器来改进它,而不是用内联的方式(它更可读)。如果你想要一个例子,我们只需要知道它是否回答了这个问题。。。直到我们不知道真正的一个。我更新了下面的,并添加了一个简单的排序函数。
 <select data-ng-model="data_selected" data-ng-options="key for key in data.slice().reverse()"></select>