gpt4 book ai didi

javascript - 我想用两个属性 Boolean value 和 Int 对 JavaScript 中的对象数组进行排序

转载 作者:行者123 更新时间:2023-11-28 04:29:56 24 4
gpt4 key购买 nike

我想对 JavaScript 中具有两个属性 bool 值和 Int 值的对象数组进行排序。我想要这样的输出:

{
first_name: 'sumeet',
last_name: 'Prentice',
offerApplicable: 'TRUE',
price: 40
}, {
first_name: 'Pirate',
last_name: 'Prentice',
offerApplicable: 'TRUE',
price: 50
}, {
first_name: 'Lazslo',
last_name: 'Jamf',
offerApplicable: 'TRUE',
price: 60
}, {
first_name: 'jitendra',
last_name: 'Prentice',
offerApplicable: 'TRUE',
price: 101
}

所有具有 true 值的对象首先也按价格排序,然后所有具有 bool 值为 false 的对象。我可以按 bool 值对它们进行排序,但我也想按价格对它们进行排序。

我已经尝试过了

var objs = [ 
{ first_name: 'Lazslo', last_name: 'Jamf' ,offerApplicable: 'TRUE' ,price: 60 },
{ first_name: 'Pig', last_name: 'Bodine' , offerApplicable: 'FALSE' ,price: 100},
{ first_name: 'Pirate', last_name: 'Prentice' ,offerApplicable: 'TRUE' ,price: 50},
{ first_name: 'nithesh', last_name: 'Bodine' , offerApplicable: 'FALSE' ,price: 40},
{ first_name: 'sumeet', last_name: 'Prentice' ,offerApplicable: 'TRUE' ,price: 40},
{ first_name: 'mahesh', last_name: 'Bodine' , offerApplicable: 'FALSE' ,price: 40},
{ first_name: 'jitendra', last_name: 'Prentice' ,offerApplicable: 'TRUE' ,price: 101}
];
function compare(a,b) {
var aConcat = a["offerApplicable"] + a["price"];
var bConcat = b["offerApplicable"] + b["price"];
if (aConcat < bConcat )
return 1;
if (aConcat > bConcat )
return -1;
return 0;

}

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

我得到这样的输出

first_name : "Lazslo" last_name : "Jamf" offerApplicable : "TRUE" price : 60

:first_name : "Pirate" last_name : "Prentice" offerApplicable : "TRUE" price : 50

first_name : "sumeet" last_name : "Prentice" offerApplicable : "TRUE" price : 40

first_name : "jitendra" last_name : "Prentice" offerApplicable : "TRUE" price : 101

first_name : "nithesh" last_name : "Bodine" offerApplicable : "FALSE" price : 40

first_name : "mahesh" last_name : "Bodine" offerApplicable : "FALSE" price : 40

first_name : "Pig" last_name : "Bodine" offerApplicable : "FALSE" price : 100

提前感谢任何帮助。

最佳答案

您可以链接 Array#sort 排序函数的返回值的标准.

第一部分

(b.offerApplicable === 'TRUE') - (a.offerApplicable === 'TRUE')

检查offerApplicable的值是否为'TRUE'。与 true 的比较会将项目移动到底部,因此我们需要使用 ab 切换检查。

第二部分

a.price - b.price

仅当之前的增量为零时才进行评估,然后返回价格的增量。

var array = [{ first_name: 'Lazslo', last_name: 'Jamf', offerApplicable: 'TRUE', price: 60 }, { first_name: 'Pig', last_name: 'Bodine', offerApplicable: 'FALSE', price: 100 }, { first_name: 'Pirate', last_name: 'Prentice', offerApplicable: 'TRUE', price: 50 }, { first_name: 'nithesh', last_name: 'Bodine', offerApplicable: 'FALSE', price: 40 }, { first_name: 'sumeet', last_name: 'Prentice', offerApplicable: 'TRUE', price: 40 }, { first_name: 'mahesh', last_name: 'Bodine', offerApplicable: 'FALSE', price: 40 }, { first_name: 'jitendra', last_name: 'Prentice', offerApplicable: 'TRUE', price: 101 }];

array.sort(function (a, b) {
return (b.offerApplicable === 'TRUE') - (a.offerApplicable === 'TRUE') || a.price - b.price;
});

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

关于javascript - 我想用两个属性 Boolean value 和 Int 对 JavaScript 中的对象数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44700910/

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