如何在Angular / Javascript中对街道地址进行排序

时间:2015-07-05 17:11:59

标签: javascript angularjs

我有几个街道地址

10 E. Main Street
1 E. Main Street
2 E. Main Street

当我执行orderBy(使用ng-repeat)时,它们会出现

1 E. Main Street
10 E. Main Street
2 E. Main Street

我怎样才能让它们成为

1 E. Main Street
2 E. Main Street
10 E. Main Street

编辑:

   <th ng-click="reverse = (sort=='date' ? !reverse : false); sort = 'date'"><a href='#' >Date</a></th>
   <th ng-click="reverse = (sort=='address' ? !reverse : false); sort = 'address'"><a href='#' >Address</a></th>
   <th ng-click="reverse = (sort=='message' ? !reverse : false); sort = 'message'"><a href='#' >Hazard</a></th>

自定义循环

<tr ng-repeat="address in ctrl.addresses | orderBy: (sort=='address' ? addressSort() : sort) : reverse">

并在我的控制器中

        this.addressSort = function(streetAddress){
            return parseInt(streetAddress.split(' ')[0]);
        }

反向排序逻辑适用于日期和消息,但我只能获得地址的降序排序。

2 个答案:

答案 0 :(得分:0)

您拥有字母数字字符的数据结构,您的选项有限。没有框架可以解决这个问题。

如果您的对象结构在一个属性中包含门牌号,而在另一个属性中包含街道地址。您可以对每个属性进行排序。

由于您询问了角度,请创建一个单独的过滤器,然后可以应用ng-repeat。

如果您需要,我们可以帮助您编写该代码。 欢呼声。

答案 1 :(得分:0)

我会这样做:

file = open("fileName", 'r')
first_line = file.readline()

count = 0
for line in file:
   if count == 0:
      count = 1
      DoStuff_1(first_line)
   DoStuff_2(line)

file.close()

sort方法中的回调函数检查数组中的第一个单词,并返回要排序的值。 (var addresses = ["10 E. Main Street", "1 E. Main Street", "2 E. Main Street"]; addresses.sort(function(a, b) { var numA = a.split(" ")[0]; var numB = b.split(" ")[0]; return numA - numB; }); 为第一个的负数,以及a为第一个的正数。

here is the docs for the sort method.