【发布时间】:2023-03-14 12:55:01
【问题描述】:
我有一个数组,我正在对其进行排序,但我需要对除数组中的一个元素之外的所有内容进行排序。
我的数组是:
var Comparison = [
{key: "None", value: "None"},
{key:"Geographical Area", value:"Geographical_Area"},
{key:"Forests", value:"Forests"},
{key:"Barren Unculturable Land", value:"Barren_Unculturable_Land"},
{key:"Land put to Non agricultural use", value:"Land_put_to_Non_agricultural_use"},
{key:"Land Area", value:"Land_Area"},
{key:"Water Area", value:"Water_Area"},
{key:"Culturable Waste", value:"Culturable_Waste"},
{key:"Permanent Pastures", value:"Permanent_Pastures"},
{key:"Land under Tree Crops", value:"Land_under_Tree_Crops"},
{key:"Fallow Land excl Current Fallow", value:"Fallow_Land_excl_Current_Fallow"},
{key:"Current Fallow", value:"Current_Fallow"},
{key:"Total Unculturable Land", value:"Total_Unculturable_Land"},
{key:"Net Sown Area", value:"Net_Sown_Area"},
{key:"Gross Sown Area", value:"Gross_Sown_Area"},
{key:"Cropping Intensity", value:"Cropping_Intensity"} ];
我正在使用以下代码对该数组进行排序:
var Comparison_sort = this.Comparison.sort(function (a, b) {
if (a.key < b.key)
return -1;
if (a.key > b.key)
return 1;
return 0;
});
这是对我的数组进行完美排序,但我希望我的元素之一位于顶部,这意味着我的元素 None 应该位于顶部并对所有其他元素进行排序。
例如,我得到这个结果:
{key: "Barren Unculturable Land", value: "Barren_Unculturable_Land"}
{key: "Cropping Intensity", value: "Cropping_Intensity"}
{key: "Culturable Waste", value: "Culturable_Waste"}
....
{key: "None", value: "None"}
但我想要这样的结果:
{key: "None", value: "None"}
{key: "Barren Unculturable Land", value: "Barren_Unculturable_Land"}
{key: "Cropping Intensity", value: "Cropping_Intensity"}
{key: "Culturable Waste", value: "Culturable_Waste"}
....
我看到了一个答案,Sort array in TypeScript,但我无法使用这个答案来解决我的问题。
【问题讨论】:
-
只检查key是否为none,返回包含该key的对象的排序值为-1?
-
给它一个特殊的价值。将其从您的数组中过滤出来,对其进行排序,然后将其放回您想要的位置。或者在比较函数中检查它,确保它总是“小于其他”(正如 KarelG 建议的那样)
-
@DaveNewton 您的意思是数组中是否有一个
None,而不是第一个位置,或者您的意思是数组中是否有多个None? -
@DaveNewton 如果集合中没有
"none",则永远不会执行分支if (a.key === "none") { return -1}...如果放在第一位。 -
@DaveNewton 我现在明白你的意思了。有了 spi 的回答,它工作正常。
标签: javascript arrays sorting