假设我们有一个像这样的数组
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' },
]
因此数组应按提供的字符串模式排序。如何实现这一点?
最佳答案
我为此制作了一个简单的排序脚本。我不知道这是否是最好的方法,因为我必须使用两种 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);
});
至少它适用于您提供的两个示例,但我不确定这是否是您所需要的。
关于javascript - 根据字符串对对象数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33234246/