gpt4 book ai didi

javascript - 按属性值对对象的javascript数组进行排序并按条件重新排序

转载 作者:行者123 更新时间:2023-11-30 10:57:30 26 4
gpt4 key购买 nike

我有一个对象数组,比如:

    var newArray = [
{value : "P1"},
{value : "P2/S2"},
{value : "P2"},
{value : "P1"},
{value : "P1/S2"},
{value : "P1/S3"},
{value : "P2/S1"},
{value : "P1/S3"},
{value : "P2/S2"},
{value : "P1"},
{value : "P2"},
{value : "P3"}
];

function compare( a, b ) {
if ( a.value < b.value ){
return -1;
}
if ( a.value > b.value ){
return 1;
}
return 0;
}

newArray.sort( compare );
console.log(newArray);

[{"value":"P1"},{"value":"P1"},{"value":"P1"},{"value":"P1/S2"},{"value":"P1/S3"},{"value":"P1/S3"},{"value":"P2"},{"value":"P2"},{"value":"P2/S1"},{"value":"P2/S2"},{"value":"P2/S2"},{"value":"P3"}]

但是如果P值之后没有S值,我在这里重新排列排序。如果没有 S 值,P 值应该是低优先级。我期待这样的结果:

[{"value":"P1/S2"},{"value":"P1/S3"},{"value":"P1/S3"},{"value":"P1"},{"value":"P1"},{"value":"P1"},{"value":"P2/S1"},{"value":"P2/S2"},{"value":"P2/S2"},{"value":"P2"},{"value":"P2"},{"value":"P3"}]

最佳答案

您可以添加后缀并将较小的字符串排序到底部。

function compare({ value: a }, { value: b }) {
a += 'ZZZ';
b += 'ZZZ';
return a > b || -(a < b);
}

var array = [{ value: "P1" }, { value: "P2/S2" }, { value: "P2" }, { value: "P1" }, { value: "P1/S2" }, { value: "P1/S3" }, { value: "P2/S1" }, { value: "P1/S3" }, { value: "P2/S2" }, { value: "P1" }, { value: "P2" }, { value: "P3" }];

array.sort(compare);

console.log(array);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 按属性值对对象的javascript数组进行排序并按条件重新排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59407010/

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