gpt4 book ai didi

javascript - 如果条件存在则链接多个过滤器

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

我正在尝试链接两个过滤器,基于两个参数范围(数组),这些参数也可能为空,因此 f.ex. speedlimit=[]

var speedfilter =[240,300]
var pricefilter = [80,120]
var cars = [
{name:'Ferrari', maxspeed:240, price: 100},
{name:'Porsche', maxspeed:220, price: 90},
{name:'Bugatti', maxspeed:300, price: 500}
];


if (speedfilters) {
return cars.filter(function (car) {
return car.maxspeed >= speedfilter[0] && car.maxspeed <= speedfilter[1];
})
} else if (pricefilter) {
return cars.filter(function (car) {
return car.price >= pricefilter[0] && car.price <= pricefilter[1];
})
}
else return cars

上例中的结果应输出{name:'Ferrari', speed:240, Price: 100}

使用 javascript filter 来实现这一点的方法是什么?提前致谢!

最佳答案

您可以通过原型(prototype)继承创建一个 filterCar 方法

Array.prototype.filterCar = function(feature, range) {
return this.filter((el) => {
// is the range defined?
if (!!range.length) {
return el[feature] >= range[0] && el[feature] <= range[1];
}
else {
return true;
}
})
};


var cars = [
{name:'Ferrari', speed:240, price: 100},
{name:'Porsche', speed:220, price: 90},
{name:'Bugatti', speed:300, price: 500}
];

var result1 = cars.filterCar('speed', [240, 300])
.filterCar('price', [80, 120]));

var result2 = cars.filterCar('speed', [ ])
.filterCar('price', [80, 120]));



console.log(result1); // [{name: "Ferrari", speed: 240, price: 100}]

console.log(result2); /* [{name: "Ferrari", speed: 240, price: 100},
{name: "Porsche", speed: 220, price: 90}] */

关于javascript - 如果条件存在则链接多个过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51328854/

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