2014-06-13 36 views
5

我有對象的數組...排序依據多個角的js

var userObjects =[ 
{userName: bob, 
age: "25", 
gender: "m" 
}, 
{userName: bill, 
age: "15", 
gender: "m" 
}, 
{userName: jen, 
age: "45", 
gender: "f" 
}, 
] 

現在我有一個NG重複我的HTML遍歷數組對象。我希望它排序的年齡:

<tr ng-repeat="user in userObjects | orderBy:-age"> 

在我的JS,我將我的年齡到intergers ....

data.forEach(function(user){ 
    user.age= parseFloat(user.age); 
} 

角不會排序的年齡,我希望看到.. 。

bill, 15 
bob, 25 
jen, 45 

但是,他們都在這個地方。我究竟做錯了什麼?

謝謝!

回答

9

嘗試包裹在單引號-age,像'-age'

1

試試這個傢伙.....

NG重複= 「用戶userObjects |排序依據: '年齡'」>

0

升序順序: -

<div ng-repeat="person in persons | orderBy:'age'"> 

降序排列: -

<div ng-repeat="person in persons | orderBy:'-age'"> 
+5

的OP已經包括他們的問題的代碼。這對任何事情有什麼幫助? – ryanyuyu

+0

@ryanyuyu他在引號中有'年齡',這是正確的答案。 –

6

沒有必要將字符串轉換爲JS中的數字。

使它成爲帶有過濾器的純角度:

| orderBy:' - 1 * age'`

+0

令人驚歎!奇蹟般有效! –

5

以下將把'年齡'轉換爲數字並按升序排序。

| orderBy : 'age/1'

0

angular.module('myApp', []).controller('namesCtrl', function($scope) { 
 
    $scope.names = [ 
 
     {name:'Jani',age:'18'}, 
 
     {name:'Carl',age:'32'}, 
 
     {name:'Margareth',age:'21'}, 
 
     {name:'Hege',age:'14'}, 
 
     {name:'Joe',age:'36'}, 
 
     {name:'Gustav',age:'42'}, 
 
     {name:'Birgit',age:'28'}, 
 
     {name:'Mary',age:'58'}, 
 
     {name:'Kai',age:'26'} 
 
     ]; 
 
});
<!DOCTYPE html> 
 
<html> 
 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script> 
 
<body> 
 

 
<div ng-app="myApp" ng-controller="namesCtrl"> 
 

 
<p>Looping with objects:</p> 
 
<ul> 
 
    <li ng-repeat="x in names | orderBy:'age'"> 
 
    {{ x.name + '-' + x.age }} 
 
    </li> 
 
</ul> 
 

 
</div> 
 

 
</body> 
 
</html>