Показать сообщение отдельно
  #1 (permalink)  
Старый 10.07.2024, 18:35
Аспирант
Отправить личное сообщение для Volonter Посмотреть профиль Найти все сообщения от Volonter
 
Регистрация: 18.01.2011
Сообщений: 92

Как наиболее правильно искать по массиву объектов?
Всем привет! Пытаюсь понять, как наиболее правильно осуществлять поиск по массиву объектов. В коде ниже два варианта, оба работают, но что-то мне подсказывает что есть более оптимальные варианты. С map и reduce еще не пробовал, у меня с ними что-то слоджности))
Буду очень благодарен за предложенные другие варианты, и чем они лучше представленных
let filter = false;


    let products = [
        {vid:"Квадрат нержавеющий", size:"150", type:"06ХН28МДТ",price:1200},
        {vid:"Круг нержавеющий", size:"11", type:"ФБ123ЧВЯ",price:300},
        {vid:"Лист нержавеющий", size:"15", type:"ZAQ987",price:2500}
    ];

    let vidValue = 'Квадрат нержавеющий';
    let sizeValue = "150";
    let typeValue = "06ХН28МДТ";
    let priceValue = 1200;

    for (let i = 0; i < 6; i++) {

       // Первый вариант
        filter = products.filter((o, i) => {
             if (o.vid != vidValue) { return false; }
             if (o.size != sizeValue) { return false; }
             if (o.type != typeValue) { return false; }
             if (o.price != priceValue) { return false; }
             return true;
        });
        filter.length ? console.log('В строке ' + i + ' совпадение ' + filter) : console.log('В строке ' + i + ' нет совпадения ' + filter );


       // Второй вариант
        filter = products.find(product => product.vid === vidValue && product.size === sizeValue && product.type === typeValue && product.price === priceValue);

        filter ? console.log('В строке ' + i + ' совпадение ' + filter) : console.log('В строке ' + i + ' нет совпадения ' + filter );
    }
Ответить с цитированием