javascript - 根据字符串对对象数组进行排序

标签 javascript jquery arrays sorting

假设我们有一个像这样的数组

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

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

  1. 对于'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);
    });
    

    Fiddle with full code

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

    关于javascript - 根据字符串对对象数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33234246/

    相关文章:

    javascript - 在 Morris Chart 上添加动画效果

    javascript - 面临给用户提供取消静音自动播放Vimeo iframe嵌入的选项的麻烦

    javascript - 如何找到我点击页面的任何内容的相对xpath(Javascript)

    javascript - 如何验证数组(矩阵)格式?

    c++ - 根据 C++ 中另一个数组的成员对数组进行排序

    通过用户 switch-case 进行字符扫描

    javascript - 将\n\r 转换为字符串在 jquery 中没有任何作用

    javascript - 在 AngularJS 中实例化全局服务

    javascript - jquery延迟ajax调用执行

    javascript - 如何获取一个JS ID作为网站的后台页面?