基于字符串

时间:2015-10-20 10:29:21

标签: javascript jquery arrays sorting

假设我们有一个类似

的数组
var a = [
    { name: 'Tom', surname: 'TestAsIvanov' },
    { name: 'Kate', surname: 'Ivanova' },
    { name: 'John', surname: 'Alivanov' },
    { name: 'Ivan', surname: 'Ivanov' }
]

我需要根据提供的字符串按姓氏字段对此数组进行排序,例如:

  1. for 'iva'模式数组应按如下方式排序
  2. var newA = [
        { name: 'Ivan', surname: 'Ivanov' },
        { name: 'Kate', surname: 'Ivanova' },
        { name: 'John', surname: 'Alivanov' },
        { name: 'Tom', surname: 'TestAsIvanov' },
    ]
    
    1. for 'a'模式数组应按如下方式排序
    2. var newA = [
          { name: 'John', surname: 'Alivanov' },
          { name: 'Ivan', surname: 'Ivanov' },
          { name: 'Kate', surname: 'Ivanova' },
          { name: 'Tom', surname: 'TestAsIvanov' },
      ]
      

      因此,数组应按提供的字符串模式排序。怎么可能实现这个呢?

1 个答案:

答案 0 :(得分:1)

我为此制作了一个简单的排序脚本。我不知道这是否是最好的方式,因为我必须使用两种sort()方法,一种按字母顺序排序(taken from here)另一种方法来模拟LIKE 'string%'(比较SQL)来获取你的条件:

var queryString = "iva";

a = a.sort(function(a, b) {
    var s1 = a.surname.toUpperCase().indexOf(queryString.toUpperCase());
    var s2 = b.surname.toUpperCase().indexOf(queryString.toUpperCase());

    return (s1 > -1 && s1 > s2);
});

Fiddle with full code

至少它适用于您提供的两个示例,但我不确定您是否只需要它。