gpt4 book ai didi

Javascript 自定义排序函数

转载 作者:行者123 更新时间:2023-11-30 07:52:51 25 4
gpt4 key购买 nike

我有一个定义如下的自定义排序函数

sortArrayBy: function(a, b, sortKey) {
if (a[sortKey] < b[sortKey])
return -1;
if (a[sortKey] > b[sortKey])
return 1;
return 0;
},

我如何更新它以根据附加参数 isAscending 动态排序/切换,它可以是 true/false

所以函数签名看起来像

sortArrayBy: function(a, b, sortKey, isAscending) {

}

最佳答案

isAscending 转换为 1(升序)或 -1(降序)

sortArrayBy: function(a, b, sortKey, isAscending) {
return (a[sortKey] - b[sortKey]) * (isAscending ? 1 : -1);
}

演示

function sortArrayBy(arr, sortKey, isAscending) {
return arr.sort( ( a, b ) => (a[sortKey] - b[sortKey]) * (isAscending ? 1 : -1) );
}

var arr = [
{ a : 1, b: 2 },
{ a : 4, b: 6 },
{ a : 3, b: 4 },
{ a : 12, b: 1 },
{ a : 5, b: 23 },
];

console.log( sortArrayBy( arr, "a", true ) );

console.log( sortArrayBy( arr, "a", false ) );

编辑

也包括字符串比较

function sortArrayBy(arr, type, sortKey, isAscending) {
if ( type == "string" )
{
return arr.sort( ( a, b ) => a[sortKey].localeCompare(b[sortKey]) * (isAscending ? 1 : -1) );
}

return arr.sort( ( a, b ) => (a[sortKey] - b[sortKey]) * (isAscending ? 1 : -1) );
}

function sortArrayBy(arr, type, sortKey, isAscending) {
if ( type == "string" )
{
return arr.sort( ( a, b ) => a[sortKey].localeCompare(b[sortKey]) * (isAscending ? 1 : -1) );
}

return arr.sort( ( a, b ) => (a[sortKey] - b[sortKey]) * (isAscending ? 1 : -1) );
}

var arr = [
{ a : 1, b: "32" },
{ a : 4, b: "w6" },
{ a : 3, b: "s4" },
{ a : 12, b: "v1" },
{ a : 5, b: "2s3" },
];

console.log( sortArrayBy( arr, "", "a", true ) );

console.log( sortArrayBy( arr, "", "a", false ) );


console.log( sortArrayBy( arr, "string", "b", true ) );

console.log( sortArrayBy( arr, "string", "b", false ) );

关于Javascript 自定义排序函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48520056/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com