代码之家  ›  专栏  ›  技术社区  ›  James D

如何根据仅字符串的预定数组对字符串和对象的嵌套数组进行排序?

  •  0
  • James D  · 技术社区  · 2 年前

    我已经搜索过了,但找不到答案。

    let correct_order_arr = ["dsihdlepsn", "dxuwmcbdeu", "dqpoimndxcv", "dplaeitfvse", "drtbnmjhfw", "ddrnvuqasw", "dfpotbnmjk", "dauiopmvdf", "drvbumnbvc"]
    let starting_array =    [[my_object_1,"dsihdlepsn"], [my_object_2,"dxuwmcbdeu"], [my_object_3,"dqpoimndxcv"], [my_object_4,"dplaeitfvse"], [my_object_5,"dfpotbnmjk"], [my_object_6, "drtbnmjhfw"], [my_object_7, "ddrnvuqasw"], [my_object_8, "dauiopmvdf"], [my_object_9, "drvbumnbvc"]];
    
    let desired_arr = starting_array.sort(function (a,b){
       if (correct_order_arr[a] === starting_array[a][1]){
         return 0;
       } else {
        return 1;
       }
    })
    
    //desired_arr = [[my_object_1,"dsihdlepsn"], [my_object_2,"dxuwmcbdeu"], [my_object_3,"dqpoimndxcv"], [my_object_4,"dplaeitfvse"], [my_object_6, "drtbnmjhfw"], [my_object_7, "ddrnvuqasw"], [my_object_5,"dfpotbnmjk"], [my_object_8, "dauiopmvdf"], [my_object_9, "drvbumnbvc"]];
    
    1 回复  |  直到 2 年前
        1
  •  3
  •   Barmar    2 年前

    不使用 sort 为此。当您需要将元素相互比较以确定相对顺序时,会使用它。

    你只需要循环 correct_order_arr ,并在中找到相应的元素 starting_array .

    let correct_order_arr = ["dsihdlepsn", "dxuwmcbdeu", "dqpoimndxcv", "dplaeitfvse", "drtbnmjhfw", "ddrnvuqasw", "dfpotbnmjk", "dauiopmvdf", "drvbumnbvc"]
    let starting_array = [
      ["my_object_1", "dsihdlepsn"],
      ["my_object_2", "dxuwmcbdeu"],
      ["my_object_3", "dqpoimndxcv"],
      ["my_object_4", "dplaeitfvse"],
      ["my_object_5", "dfpotbnmjk"],
      ["my_object_6", "drtbnmjhfw"],
      ["my_object_7", "ddrnvuqasw"],
      ["my_object_8", "dauiopmvdf"],
      ["my_object_9", "drvbumnbvc"]
    ];
    
    result_array = correct_order_arr.map(s => starting_array.find(el => el[1] == s));
    console.log(result_array);