如何用三个条件过滤该数组?

时间:2019-05-28 16:03:11

标签: javascript arrays

我有一个对象数组,我想根据以下(三个)条件进行过滤:

  • 状态为“未售出”和

  • 最低价格为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的汽车对象。

注:这个问题是一个错误。过滤条件还可以,但是数组对象不满足过滤条件的要求。即使我在发布前已经花了几个小时,下一次发布前我还是会更加小心

1 个答案:

答案 0 :(得分:0)

您的价格是一个字符串。您需要将其解析为数字,然后将其与您的最低/最高价格进行比较。

const result = cars.filter(car => car.status === 'unsold' && parseInt(car.price) >= 15000000 && parseInt(car.price) <= 30000000);

在您的示例数据中,您仍然会获得带有上述过滤器的空数组,因为没有一辆汽车符合您的未售出标准,介于15-30,000,000之间。