代码之家  ›  专栏  ›  技术社区  ›  nimrod

javascript中的自定义排序数组[重复]

  •  0
  • nimrod  · 技术社区  · 7 年前

    假设我有以下数组:

    [
        {
           "key":"Certified?",
           "value":"Yes"
        },
        {
           "key":"Language",
           "value":"EN"
        },
        {
           "key":"Training-Place",
           "value":"City"
        }
     ]
    

    我想按 Language , Certified? , Training-Place 我怎么能做到?我最好能定义排序,比如:

    ["Language", "Certified?", "Training-Place"]
    

    非常感谢,感谢您的帮助。

    2 回复  |  直到 7 年前
        1
  •  1
  •   amrender singh    7 年前

    你可以简单地使用 Arrays.sort() 并使用顺序数组按顺序数组指定的顺序对数组进行排序。

    请尝试以下操作:

    var arr = [ { "key":"Certified?", "value":"Yes" }, { "key":"Language", "value":"EN" }, { "key":"Training-Place", "value":"City" }, { "key":"Training-Place", "value":"aaa" }, { "key":"Language", "value":"bbb" }];
    
    var order = ["Language", "Certified?", "Training-Place"];
     
     arr.sort((a,b)=> order.indexOf(a.key) - order.indexOf(b.key));
     
     console.log(arr);
        2
  •  1
  •   brk    7 年前

    创建将包含顺序的数组。现在循环此数组,并从主数组中筛选出与名称匹配的对象

    let arrayToSort = [{
        "key": "Certified?",
        "value": "Yes"
      },
      {
        "key": "Language",
        "value": "EN"
      },
      {
        "key": "Training-Place",
        "value": "City"
      }
    ]
    
    
    let sortOrder = ["Language", "Certified?", "Training-Place"]
    let customSortArray = [];
    sortOrder.forEach(function(item) {
      customSortArray.push(
        arrayToSort.filter(function(items) {
          return item === items.key
        })[0])
    })
    
    
    console.log(customSortArray)