我有这个数组。如何使用下划线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"]
任何人都可以帮助我获得此输出。感谢。
答案 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
);
说明:
Array.sort()
Array.map()
生成的数组然后返回(在本例中为log)第二个值。但是,如果您真的想使用下划线,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#sort
和Array#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);