假设我们有一个类似
的数组var a = [
{ name: 'Tom', surname: 'TestAsIvanov' },
{ name: 'Kate', surname: 'Ivanova' },
{ name: 'John', surname: 'Alivanov' },
{ name: 'Ivan', surname: 'Ivanov' }
]
我需要根据提供的字符串按姓氏字段对此数组进行排序,例如:
'iva'
模式数组应按如下方式排序var newA = [
{ name: 'Ivan', surname: 'Ivanov' },
{ name: 'Kate', surname: 'Ivanova' },
{ name: 'John', surname: 'Alivanov' },
{ name: 'Tom', surname: 'TestAsIvanov' },
]
'a'
模式数组应按如下方式排序var newA = [
{ name: 'John', surname: 'Alivanov' },
{ name: 'Ivan', surname: 'Ivanov' },
{ name: 'Kate', surname: 'Ivanova' },
{ name: 'Tom', surname: 'TestAsIvanov' },
]
因此,数组应按提供的字符串模式排序。怎么可能实现这个呢?
答案 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);
});
至少它适用于您提供的两个示例,但我不确定您是否只需要它。