使用数组元素强调JS排序

时间:2017-11-09 16:30:29

标签: javascript underscore.js

我有这个数组。如何使用下划线js'_.sortBy'根据最后一个元素(即0 2,1,3,4:

)对国家进行排序
["33001","ALL","0"]["33001","APAC", "2"]["33001","America", "1"]["33001","EMEA", "3"]["33001", "Sland", "4"]

预期结果:["ALL","America","APAC","EMEA","Sland"]

任何人都可以帮助我获得此输出。感谢。

3 个答案:

答案 0 :(得分:0)

您可能拥有X-Y Problem。您需要使用_.sortBy,您可以使用原生JavaScript:

let array = [
  ["33001", "ALL", "0"],
  ["33001", "APAC", "2"],
  ["33001", "America", "1"],
  ["33001", "EMEA", "3"],
  ["33001", "Sland", "4"]
];

console.dir(                        // Log, illustratively
  array.sort((a, b) => a[2] > b[2]) // Apply a custom ordering
       .map(entry => entry[1])      // Return the field you want
);

说明:

  1. 使用Array.sort()
  2. 对数组进行排序
  3. Array.map()生成的数组然后返回(在本例中为log)第二个值。
  4. 但是,如果您真的想使用下划线,array.sort((a, b) => a[2] > b[2])可以替换为_.sortBy(arr, items => items[2])

答案 1 :(得分:0)

从这个数组开始

var arr = [["33001","ALL","0"],["33001","APAC", "2"],["33001","America", "1"],["33001","EMEA", "3"],["33001", "Sland", "4"]];

可以通过指定用于比较数组元素的函数sortBy来完成排序。

var result = _.sortBy(arr, (items) => { return items[2]; });

排序后,您可以使用map

获取所需的值

var finalResult = result.map((items) => { return items[1]; });

答案 2 :(得分:0)

您可以使用Array#sortArray#map的标准Javascript方法。



var array = [["33001","ALL","0"], ["33001","APAC", "2"], ["33001","America", "1"], ["33001","EMEA", "3"], ["33001", "Sland", "4"]],
    result = array
        .sort((a, b) => a[2] - b[2])
        .map(a => a[1]);
        
console.log(result);