![](/img/trans.png)
[英]I want to sort an array of objects in JavaScript with Two properties Boolean value and Int
[英]I want to sort an array of objects based on two properties
我想在JavaScript中使用兩個屬性布爾值和Int值對一組對象進行排序。我想要像這樣輸出:
{ first_nom: 'sumeet', last_nom: 'Prentice' ,offerApplicable: 'TRUE' ,price: 40},
4:55 PM { first_nom: 'Pirate', last_nom: 'Prentice' ,offerApplicable: 'TRUE' ,price: 50},
4:55 PM { first_nom: 'Lazslo', last_nom: 'Jamf' ,offerApplicable: 'TRUE' ,price: 60 },
4:55 PM { first_nom: 'jitendra', last_nom: 'Prentice' ,offerApplicable: 'TRUE' ,price: 101}
具有真值的所有對象首先也按價格排序,然后所有具有布爾值的對象為false。 我能夠按布爾值對它們進行排序,但我也希望按價格對它們進行排序。
我試過這個
var objs = [
{ first_nom: 'Lazslo', last_nom: 'Jamf' ,offerApplicable: 'TRUE' ,price: 60 },
{ first_nom: 'Pig', last_nom: 'Bodine' , offerApplicable: 'FALSE' ,price: 100},
{ first_nom: 'Pirate', last_nom: 'Prentice' ,offerApplicable: 'TRUE' ,price: 50},
{ first_nom: 'nithesh', last_nom: 'Bodine' , offerApplicable: 'FALSE' ,price: 40},
{ first_nom: 'sumeet', last_nom: 'Prentice' ,offerApplicable: 'TRUE' ,price: 40},
{ first_nom: 'mahesh', last_nom: 'Bodine' , offerApplicable: 'FALSE' ,price: 40},
{ first_nom: 'jitendra', last_nom: '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;
}`enter code here`
console.log(objs.sort(compare));
請提前幫助謝謝。
試試這個比較功能
function compare(a,b) {
if (a.offerApplicable == b.offerApplicable)
return (a.price > b.price)
else return (a.offerApplicable < b.offerApplicable)
}
你需要做的是三個檢查:
(a.offerApplicable == 'FALSE' && b.offerApplicable == 'TRUE')
然后返回1
。 (a.offerApplicable == b.offerApplicable == 'TRUE')
然后返回a.price > b.price
。 (a.offerApplicable == b.offerApplicable)
然后返回a.price > b.price
。 這是你的代碼應該如何:
objs.sort(function compare(a,b) {
if (a.offerApplicable == 'FALSE' && b.offerApplicable == 'TRUE')
return 1;
else if(a.offerApplicable == b.offerApplicable == 'TRUE')
return a.price > b.price
else if(a.offerApplicable == b.offerApplicable)
return a.price > b.price
});
演示:
var objs = [{ first_nom: 'Lazslo', last_nom: 'Jamf', offerApplicable: 'TRUE', price: 60 }, { first_nom: 'Pig', last_nom: 'Bodine', offerApplicable: 'FALSE', price: 100 }, { first_nom: 'Pirate', last_nom: 'Prentice', offerApplicable: 'TRUE', price: 50 }, { first_nom: 'nithesh', last_nom: 'Bodine', offerApplicable: 'FALSE', price: 40 }, { first_nom: 'sumeet', last_nom: 'Prentice', offerApplicable: 'TRUE', price: 40 }, { first_nom: 'mahesh', last_nom: 'Bodine', offerApplicable: 'FALSE', price: 40 }, { first_nom: 'jitendra', last_nom: 'Prentice', offerApplicable: 'TRUE', price: 101 } ]; console.log(objs.sort(function compare(a,b) { if (a.offerApplicable == 'FALSE' && b.offerApplicable == 'TRUE') return 1; else if(a.offerApplicable == b.offerApplicable == 'TRUE') return a.price > b.price else if(a.offerApplicable == b.offerApplicable) return a.price > b.price }));
這將根據price
對offerApplicable
進行排序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.