Javascript 如何在angularjs中对foreach中的数字数组进行排序?

Javascript 如何在angularjs中对foreach中的数字数组进行排序?,javascript,angularjs,angularjs-ng-repeat,Javascript,Angularjs,Angularjs Ng Repeat,我在控制器中具有以下范围: for(x = 1; x <= 15; x++) { x = parseInt(x); Scope.numArr[x] = x; } for(x=1;x试试这个: Controller.js: vm.number = 0; vm.sample = []; function activate() { return common.activateController([getNumber()], controllerId)

我在控制器中具有以下范围:

for(x = 1; x <= 15; x++)
{
  x = parseInt(x);
  Scope.numArr[x] = x;
}
for(x=1;x试试这个:

Controller.js:

    vm.number = 0;
    vm.sample = [];

 function activate() {
       return common.activateController([getNumber()], controllerId)
              .then(function () {
              });
    }

function getNumber(){
   for (var i = 0; i <= 15; i++) {
            i = parseInt(i);
            vm.sample.push({ number: i });
        }
 }
vm.number=0;
vm.sample=[];
函数激活(){
返回common.activateController([getNumber()],controllerId)
.然后(函数(){
});
}
函数getNumber(){
对于(var i=0;i非对象数据源

也就是说,您可以轻松创建将对象哈希转换为数组的自定义筛选器:

   app.filter('toArray', function() { 
        return function(data) { 
           var array = [];
           for(var d in data) {
              array.push({key:d, value:data[d]});
           }

           return array;
        }
   });
然后可以将过滤器应用于对象数据源:

<body ng-app="app" ng-controller='MyController'> 
    <div ng-repeat="item in arr | toArray | orderBy: 'key':true">
        {{item.key}}{{item.value}}
    </div>
</body>

{{item.key}{{item.value}
toArray筛选器将对象数据源转换为具有键和值属性的对象文字数组。orderBy然后根据指定为第二个参数(“键”或“值”)的属性对结果数组进行排序。最后,第三个参数指定是否反转数组

在选择中使用

<select data-ng-model="printValue" ng-options="item.key as item.value for item in arr | toArray | orderBy: 'key':true"> 
 <option value="">Print options</option>
</select>

打印选项
试试这个

未分类

<option ng-repeat="key in notSorted(numArr).slice().reverse()" ng-init="value = numArr[key]" value="{{key}}">{{value}}</option>
html


打印选项
{{value}}
剧本

 var DemoApp = angular.module("DemoApp", []);
 DemoApp.controller("DemoController",

 function DemoController($scope) {
     $scope.numArr = {};
     for (var x = 1; x <= 15; x++) {
         x = parseInt(x);
         $scope.numArr[x] = x;
     }

     $scope.notSorted = function (obj) {
         if (!obj) {
             return [];
         }
         return Object.keys(obj);
     }
 });
var DemoApp=angular.module(“DemoApp”,[]);
DemoApp.controller(“DemoController”,
功能控制器($scope){
$scope.numar={};

对于(var x=1;x hi parthicool05,为什么我们需要为此编写一个函数?这是一个类似于“+”或“-”Scope.name对字符串数据进行排序的简单方法。难道没有更简单的方法吗?对于向下投票的爱好者,如果你有足够的知识来提供一个简单的答案,那么你应该在这里提供那个该死的简单答案。向下投票只表示你的无知兰斯和不接受事实。我可以建议你少大声嚷嚷,把注意力集中在你的问题上吗?对每个人生气肯定会让你落选。嗨,布拉德,我明白你的意思,但我们如何解决这个简单的问题。我有一个数组,想用veiw显示它。但是,如果它自动重新排列数据,解决方案是什么?在文档中提到了什么?花了我一天多的时间,我手头上仍然没有解决方案。这可能会有帮助。@请看一下我的回答谢谢,非常有解释性。但这看起来像是一种很难的方法。如果你首先绑定到数组对象文本,则不需要自定义筛选器,而且一切都很简单更容易。
<select data-ng-model="printValue">
        <option value="">Print options</option>
        <option ng-repeat="key in notSorted(numArr)" ng-init="value = numArr[key]" value="{{key}}">{{value}}</option>
</select>
 var DemoApp = angular.module("DemoApp", []);
 DemoApp.controller("DemoController",

 function DemoController($scope) {
     $scope.numArr = {};
     for (var x = 1; x <= 15; x++) {
         x = parseInt(x);
         $scope.numArr[x] = x;
     }

     $scope.notSorted = function (obj) {
         if (!obj) {
             return [];
         }
         return Object.keys(obj);
     }
 });
<option ng-repeat="key in notSorted(numArr).slice().reverse()" ng-init="value = numArr[key]" value="{{key}}">{{value}}</option>