@0SpaceTraveler0

Как отсортировать массив по нескольким параметрам?

Здравствуйте, имеется массив заказов(на картинке вывел + красными цифрами прописал порядок в котором они по идее должны быть). Как мне отсортировать его, следующий элемент должен быть равен предыдущему по
if("Кол. штукосталось осн." > 0){
    то берём за поиск id в колонке "id", следующий элемент должен быть равен по 
    колонкам "id" или "Совмещщеный паспорт", "Ширина",  "Материал", "Кол на листе осн." или "Кол на листе сов."
}else {
    то берём за поиск id в колонке "Совмещщеный паспорт", следующий элемент должен быть равен по 
    колонкам "id" или "Совмещщеный паспорт", "Ширина",  "Материал", "Кол на листе осн." или "Кол на листе сов."
}

643e4bca2f9e4060336236.jpeg

function sortData(data) {
    data.forEach((item, index, arr) => {
        first = item;
        console.log(item['id'] + " "+item['combined_id_passport']+" - "+index)
        arr.splice(index, 1);
        if(item['id'] == 82 || item['combined_id_passport'] == 82){
            data.forEach((item_copy, index_copy,) => {
                if(item['width'] == item_copy['width'] && item_copy['flag'] != 1){
                    console.log(item['id'] + " " + item['combined_id_passport'])
                    console.log(item_copy['id'] + " " + item_copy['combined_id_passport'])
                    console.log(" ")
                    if(item['remaining_quantity'] > 0){
                        if(item['id'] == item_copy['id'] && item['main_order_quantity_widtht'] == item_copy['main_order_quantity_widtht']
                            || item['id'] == item_copy['combined_id_passport'] && item['main_order_quantity_widtht'] == item_copy['combined_order_quantity_widtht']){

                            console.log("1work")
                            item_copy['flag'] = 1
                            arr.splice(index , 0, item_copy);
                            arr.splice(index_copy+1, 1);
                        }
                    }else{
                        if(item['combined_id_passport'] == item_copy['combined_id_passport'] && item['combined_order_quantity_widtht'] == item_copy['combined_order_quantity_widtht']
                            || item['combined_id_passport'] == item_copy['id'] && item['combined_order_quantity_widtht'] == item_copy['main_order_quantity_widtht']){

                            console.log("2work")
                            item_copy['flag'] = 1
                            arr.splice(index , 0, item_copy);
                            arr.splice(index_copy+1, 1);
                        }
                    }
                }
            });
        }

        arr.splice(index, 0, first);
    });
}

буду рад услышать как можно сделать лучше
  • Вопрос задан
  • 105 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
Бюро Цифровых Технологий Санкт-Петербург
от 120 000 до 180 000 ₽
03 мая 2024, в 14:40
1000 руб./за проект
03 мая 2024, в 14:39
500 руб./за проект