Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 29.01.2022, 19:42
Интересующийся
Отправить личное сообщение для DzonyB Посмотреть профиль Найти все сообщения от DzonyB
 
Регистрация: 28.01.2022
Сообщений: 16

Сообщение от рони Посмотреть сообщение
не знаю.
Понял, тема закрыта. Спасибо, Вы очень любезны.
Ответить с цитированием
  #22 (permalink)  
Старый 31.01.2022, 20:09
Интересующийся
Отправить личное сообщение для DzonyB Посмотреть профиль Найти все сообщения от DzonyB
 
Регистрация: 28.01.2022
Сообщений: 16

Сообщение от рони Посмотреть сообщение
не знаю.
Рони,Выкладываю свои потуги. В глубине души понимаю , что кривовато , но лучше сделать ума , не хватило .
Недостатки ,
1. При указании суммы подгруппы не elem_sum+1 , т.е ne 11 , a 10 , разбивает только на подгруппы с суммой 10 , а в основном массиве остается 1 .
2. Остается пустой массив.
Если не трудно , прошу покритиковать , а еще лучше подправить . Я с удовольствием поизучаю рабочий вариант.

<script>

    const webstore = new Vue({
        el: '#app',
        data() {
            return {

                array_in: [1, 2, 4, 7, 1, 6, 2, 8],

                array_original: [],

                count_group: 3,

                array_out: [],

            }
        },

        created() {

            this.getArray(this.array_in, this.count_group);
        },

        methods: {

            getArray(arr, n) {

                let arr_out = [];
                n = this.count_group;
                let arr_clone = [arr_out];
                let arr_length = arr.length;

                this.array_original = Array.from(this.array_in);

                arr.sort((a, b) => b - a);

               let elem_sum = parseInt(arr.reduce((x, y) => x + y) / n);

                for (let i = 0; i <= n - 1; i++) {

                    for (let i = 0; i <= arr_length - 1; i++) {

                        if (arr_out.reduce((x, y) => x + y, 0) + arr[i] <= elem_sum + 1) {
                            arr_out.splice(0, 0, arr[i]);
                            delete arr[i];
                        }
                    }

                    if (arr_out.reduce((x, y) => x + y, 0) <= elem_sum + 1) {
                        arr_out = [] , arr_clone.push(arr_out);
                    }
                }
                this.array_out = arr_clone;

            }// End Get array
        },

    }); //End Vue

</script>
Ответить с цитированием
  #23 (permalink)  
Старый 01.02.2022, 00:05
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

vue разбить массив на n частей
DzonyB,

<!DOCTYPE html>
<html>
<head>
    <title>Untitled</title>
    <meta charset="utf-8">
    <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
</head>
<body>
    <div id="app">
        <ul>
            <li v-for="el of array_out">
                {{el}}
            </li>
        </ul>
    </div>
    <script>
        const webstore = new Vue({
            el: '#app',
            data() {
                return {
                    array_in: [1, 2, 4, 7, 1, 6, 2, 8],
                    count_group: 3,
                    array_out: []
                }
            },
            created() {
               this.array_out = this.getArray(this.array_in, this.count_group);
            },
            methods: {
                getArray(arr, size) {
                    arr = arr.slice().sort((a, b) => b - a);
                    let arr_current = [];
                    let arr_calculated = [arr_current];
                    let average = (arr, size) => Math.trunc(arr.reduce((x, y) => x + y) / size);
                    for (let i = 0; size; i++) {
                        let limit = average(arr, size--);
                        for (let k = 0; k < arr.length;) {
                            if (limit - arr[k] >= 0) {
                                limit -= arr[k];
                                arr_current.push(arr[k]);
                                arr.splice(k, 1);
                            } else k++;
                        }
                        if(size == 1){
                        arr_calculated.push(arr);
                        break;
                        }
                        if (arr.length) {
                        arr_current = [];
                        arr_calculated.push(arr_current);
                        }
                    }
                    return arr_calculated;
                } // End Get array
            },
        }); //End Vue
    </script>
</body>
</html>

Последний раз редактировалось рони, 01.02.2022 в 09:13.
Ответить с цитированием
  #24 (permalink)  
Старый 01.02.2022, 08:23
Интересующийся
Отправить личное сообщение для DzonyB Посмотреть профиль Найти все сообщения от DzonyB
 
Регистрация: 28.01.2022
Сообщений: 16

Рони, Спасибо дружище. Наконец то мы поняли друг друга .
С удовольствием буду анализировать ошибки в своем говнокоде,
Еще раз спасибо.
Ответить с цитированием
  #25 (permalink)  
Старый 01.02.2022, 09:15
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

DzonyB,
#23 добавил немного "косметики"
Ответить с цитированием
  #26 (permalink)  
Старый 01.02.2022, 16:01
Интересующийся
Отправить личное сообщение для DzonyB Посмотреть профиль Найти все сообщения от DzonyB
 
Регистрация: 28.01.2022
Сообщений: 16

Сообщение от рони Посмотреть сообщение
DzonyB,
#23 добавил немного "косметики"
Спасибо еще раз.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как преобразовать массив объектов в массив массивов sovsem-nub Events/DOM/Window 4 12.05.2018 21:56
Добавление объекта в массив в цикле Dark19 Элементы интерфейса 3 11.12.2016 23:11
Чтение данных из файла в массив TheSingleElk Общие вопросы Javascript 2 16.06.2016 01:09
Разбить строку в массив по несколько символов BaBaKa Общие вопросы Javascript 11 20.11.2014 21:29
Как создать многомерный массив FRIE Общие вопросы Javascript 29 02.06.2010 19:14