не могу отсортировать массив для вывода категорий

77
23 ноября 2021, 02:10

есть некий массив items мне надо его отфильтровать по категориям , как сделать через цикл for или items.filter, я пробовал( index используется в React.Component onClick={() =>{productModel.typeOfProducts("phone")}}

items = [
    {
        id: 100,
        title: 'Ipnone 200',
        price: 12000,
        type:"phone",
        rest: 10
    },
    {
        id: 101,
        title: 'Samsung AAZ8',
        price: 22000,
        type:"phone",
        rest: 5
    },
    {
        id: 103,
        title: 'Nokia 3310',
        price: 5000,
        type:"phone",
        rest: 2
    },
    {
        id: 105,
        title: 'Huawei ZZ',
        price: 15000,
        type:"phone",
        rest: 8
    },
    {
        id: 106,
        title: 'Ipad 10',
        price: 20000,
        type:"tablet",
        rest: 8
    },
    {
        id: 107,
        title: 'ipad 20x',
        price: 15000,
        type:"tablet",
        rest: 8
    },
    {
        id: 108,
        title: 'Microwave',
        price: 5000,
        type:"appliance",
        rest: 8
    },
];
typeOfProducts(index){
    this.items.map((pr,i) =>{
        if(pr.type !== index){
            this.items.splice(i,1);
        }
    });
}
Answer 1

map вернет столько же элементов, сколько в исходном массиве, а вам надо отобрать часть. Удобнее воспользоваться filter по условию type равен заданному

items = [ 
    { 
        id: 100, 
        title: 'Ipnone 200', 
        price: 12000, 
        type:"phone", 
        rest: 10 
    }, 
    { 
        id: 101, 
        title: 'Samsung AAZ8', 
        price: 22000, 
        type:"phone", 
        rest: 5 
    }, 
    { 
        id: 103, 
        title: 'Nokia 3310', 
        price: 5000, 
        type:"phone", 
        rest: 2 
    }, 
    { 
        id: 105, 
        title: 'Huawei ZZ', 
        price: 15000, 
        type:"phone", 
        rest: 8 
    }, 
    { 
        id: 106, 
        title: 'Ipad 10', 
        price: 20000, 
        type:"tablet", 
        rest: 8 
    }, 
    { 
        id: 107, 
        title: 'ipad 20x', 
        price: 15000, 
        type:"tablet", 
        rest: 8 
    }, 
    { 
        id: 108, 
        title: 'Microwave', 
        price: 5000, 
        type:"appliance", 
        rest: 8 
    }, 
]; 
 
function typeOfProducts(arr, type) { 
    return arr.filter(pr => pr.type == type) 
    } 
     
console.log(typeOfProducts(items, "phone"))  

READ ALSO
Как увеличить скорость падения фигуры в Тетрис?

Как увеличить скорость падения фигуры в Тетрис?

Нужно реализовать увеличение скорости падения фигуры с каждым убранным уровнемКажется уже всё перепробовал, уже глаза замылились

112
Поясните код из JavaScript (про localStorage)

Поясните код из JavaScript (про localStorage)

В общем нужно записать отмеченные чекбоксыы (для отображения после перезагрузки)В интернете нашел решение, но не могу понять код (в основном...

66
Асинхронная очередь запросов на сервер с фиксированным интервалом на JavaScript

Асинхронная очередь запросов на сервер с фиксированным интервалом на JavaScript

Есть код синхронного запросаСинхронный используется потому, что нельзя отправлять параллельные запросы, сервер отвечает не чаще раза в секунду,...

76
Ошибка при создании слайдера через объект

Ошибка при создании слайдера через объект

При запуске кода изображения не изменяются - указывается ошибка

162