由于代碼嵌套,我想通過有效的方式找到
this.store.carsWithFilters = this.store.cars.filter(car => {
if (price && car.price < price.value) {
return car
}
if (tachometer && car.tachometer < tachometer.value) {
return car
}
if (cars.length > 0 && cars.includes(car.name.split(' ')[0])) {
return car
}
if (colors.length > 0 && colors.includes(car.color)) {
return car
}
if (fuel && car.fuel === fuel.text) {
return car
}
})
變成所有可能的條件
例如我有 3 個條件
1 - if condition1
2 - if codititon2
3 - if condition3
4 - if condition1 && condition2
5 - if condition2 && condition3
6 - if condition1 && condition3
7 - if condition1 && condition2 && condition3
uj5u.com熱心網友回復:
多型性可能在這里有所幫助。嘗試使用使用物件和類的 Web 框架,并嘗試使用多型性來擺脫這些條件。EG 嘗試使用 Typescript 并開發一個表示物件之間關系的模型,以便使用多型性,而不是條件。
uj5u.com熱心網友回復:
您可以考慮if使用&&(和)
if (price && car.price < price.value) &&
(tachometer && car.tachometer < tachometer.value) &&
(cars.length > 0 && cars.includes(car.name.split(' ')[0])) &&
(colors.length > 0 && colors.includes(car.color)) &&
(fuel && car.fuel === fuel.text)
{
return car
}
小例子:
假設您有一個具有 3 個屬性的汽車專案:
- 鈮座
- 燃料
- 顏色
現在您希望以下所有值都為真
- 汽車必須至少有5個座位
- 汽車必須有鉛 10 燃料
- 車必須是藍色的
然后您將使用以下 if 陳述句進行檢查:
if(car.nbSeats > 4 && car.fuel > 10 && car.color === "blue")
如果您希望至少一個屬性為真(不是全部),您將使用||關鍵字進行檢查
if(car.nbSeats > 4 || car.fuel > 10 || car.color === "blue")
const car1 = {
nbSeats: 4,
fuel: 20,
color: "red"
}
const car2 = {
nbSeats: 7,
fuel: 5,
color: "blue"
}
const car3 = {
nbSeats: 6,
fuel: 20,
color: "blue"
}
function isCarValid(car){
if(car.nbSeats > 4 && car.fuel > 10 && car.color === "blue") return "Valid"
else return "Not valid"
}
console.log(isCarValid(car1))
console.log(isCarValid(car2))
console.log(isCarValid(car3))
uj5u.com熱心網友回復:
如果它們都應該真正做并回傳相同的東西,則并行/同級 if 陳述句可以用“或”連接:
if (
(price && car.price < price.value)
|| (tachometer && car.tachometer < tachometer.value)
|| (cars.length > 0 && cars.includes(car.name.split(' ')[0]))
|| (colors.length > 0 && colors.includes(car.color))
|| (fuel && car.fuel === fuel.text)
) {return car;}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/461449.html
標籤:javascript
