我有一个对象数组,我想根据以下(三个)条件进行过滤:
状态为“未售出”和
最低价格为15000000,并且
最大价格为30000000。
这是数组
const cars = [
{
id: 1,
owner: 1,
createdOn: new Date(),
state: 'new',
status: 'unsold',
price: '50000000',
manufacturer: 'Toyota',
model: 'Avalon',
bodytype: 'car',
imageurl: 'https://www.cloudinary.com/photo/yellow-sports-car-during-day-time-39855/'
},
{
id: 2,
owner: 2,
createdOn: new Date(),
state: 'used',
status: 'sold',
price: '30000000',
manufacturer: 'Hyundai',
model: 'Elantra',
bodytype: 'car',
imageurl: 'https://www.cloudinary.com/photo/yellow-sports-car-during-day-time-39855/'
},
{
id: 3,
owner: 3,
createdOn: new Date(),
state: 'new',
status: 'sold',
price: '25000000',
manufacturer: 'Toyota',
model: 'Siena',
bodytype: 'car',
imageurl: 'https://www.cloudinary.com/photo/yellow-sports-car-during-day-time-39855/'
},
{
id: 4,
owner: 3,
createdOn: new Date(),
state: 'used',
status: 'sold',
price: '15000000',
manufacturer: 'Honda',
model: 'Panther',
bodytype: 'van',
imageurl: 'https://www.cloudinary.com/photo/yellow-sports-car-during-day-time-39855/'
}
];
const result = cars.filter(car => car.status === 'unsold' && car.price >= Number('15000000') && car.price <= Number('30000000'));
console.log(result);
但是,我一直得到一个空数组。 我在做什么错了?
结果应该是ID为2、3和4的汽车对象。
注:这个问题是一个错误。过滤条件还可以,但是数组对象不满足过滤条件的要求。即使我在发布前已经花了几个小时,下一次发布前我还是会更加小心
答案 0 :(得分:0)
您的价格是一个字符串。您需要将其解析为数字,然后将其与您的最低/最高价格进行比较。
const result = cars.filter(car => car.status === 'unsold' && parseInt(car.price) >= 15000000 && parseInt(car.price) <= 30000000);
在您的示例数据中,您仍然会获得带有上述过滤器的空数组,因为没有一辆汽车符合您的未售出标准,介于15-30,000,000之间。