Разбить большой массив на страницы с помощью javascript

У меня есть массив js, который вызовет некоторые проблемы с моим электронным приложением из-за его размера, он будет содержать около 53000 объектов. Чтобы избежать проблем с производительностью, как я могу разделить его, когда данные загружаются при запуске приложения? на данный момент я получаю данные из файла доступа ad odbc и помещаю их в массив на внешнем интерфейсе с помощью vuejs.

фон.js

ipcMain.on('init', (event, ...args) => {
    let suppliersData = false
    let clientsData = false
    suppliersdb.query('SELECT * FROM FANFOR0F_1')
        .then( (results) => {
            console.info(results.length)
            //
            suppliersData = true
            //result.NEMA = result.NEMA.replace('§', '@')
            event.sender.send('suppliersData', results)            
        }).catch( e => { 
            console.info(e) 
            event.sender.send('databaseUpdateError', e)
        })
    clientsdb.query('SELECT * FROM PDECON0F_1')
        .then( (results) => {
            console.info(results.length)
            clientsData = true
            event.sender.send('clientsData', results)
        }).catch( e => {
            console.info(e)
            event.sender.send('databaseUpdateError', e)
        })
    //
    if ( suppliersData && clientsData ){
        event.sender.send('databaseUpdateCompleted')
    }
})

vue интерфейс-время загрузки mounted() ловушка

        window.ipcRenderer.send('init')
        window.ipcRenderer.receive('suppliersData', (data) => {
            this.suppliersDataAvailable = true
            this.store.suppliers = data
        })
        window.ipcRenderer.receive('clientsData', (data) => {
            console.info(data)
            this.clientsDataAvailable = true
            this.store.clients = data
        })

Моя идея состоит в том, чтобы разделить его на разные страницы или лениво загружать содержимое при прокрутке страницы. Я реализую rxdb, чтобы иметь локальную копию данных и сократить время загрузки при запуске приложения. Любое предложение будет оценено.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
63
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

У меня есть решение:

const array = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14];
//main array that you want to split
const arrays = [];
//small arrays
const arraysLengths = 4;
//elements in one array
let array1 = [] 
//temporary array


for (let i = 0; i < array.length; i=i+arraysLengths) {
    for (let j = 0; j < arraysLengths; j++) {
        if ((i+j) <= array.length - 1) {
            array1.push(array[i+j])
        }

    };
    //this is the code that splits arrays

arrays.push(array1);
array1=[]
//transfer arrays into another array
};
console.info(arrays)  //show result

Вы можете вставить любое натуральное число в arrayLengths, и оно сработает. Вы можете найти все массивы в массиве массивов

Здравствуйте, добро пожаловать в stackoverflow. Я попробую ваше предложение. На данный момент я использую функцию Array.slice(), чтобы иметь копию исходного массива, которая назначается выделенной переменной в приложении vue. Моя идея состоит в том, чтобы реализовать бесконечную прокрутку, чтобы срез изменялся каждый раз, когда это необходимо, но я не уверен, что это будет работать должным образом.

ICTDEV 23.05.2023 09:05
Ответ принят как подходящий

я нашел более простое решение, в котором используется метод .slice():

const array = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14];
const arrays = [];
const arraysLengths = 4;
for (let i = 0; i < array.length; i=i+arraysLengths) {
    arrays.push(array.slice(i,i+arraysLengths));
    
};
console.info(arrays);  

все работает так же. За исключением того, что вам больше не нужен этот временный массив.

Я проверю ваш код и дам вам знать. Наслаждайтесь сообществом!

ICTDEV 23.05.2023 17:13

Просто соображение, мне нужно будет зацикливать массив в vuejs, когда это необходимо, знаете ли вы способ реализовать разбивку на страницы, если я разделю массив таким образом?

ICTDEV 23.05.2023 17:14

Извините, я не умею разбивать на страницы. Я новичок в JavaScript. Я знаю только ванильный JavaScript.

A guy 23.05.2023 17:52

Не волнуйтесь, это не сложно. Я тестирую предложенное вами решение, но на данный момент кажется, что оно вообще не работает в vue. Я дам вам знать в любом случае

ICTDEV 24.05.2023 08:47

Это работало нормально. Теперь мои массивы разбиты на страницы. Я начну с этого момента, чтобы добавить разбиение на страницы в моем приложении Vue Electron. Спасибо за предложение

ICTDEV 24.05.2023 09:18

Другие вопросы по теме