У меня есть массив 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, чтобы иметь локальную копию данных и сократить время загрузки при запуске приложения. Любое предложение будет оценено.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


У меня есть решение:
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, и оно сработает. Вы можете найти все массивы в массиве массивов
я нашел более простое решение, в котором используется метод .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);
все работает так же. За исключением того, что вам больше не нужен этот временный массив.
Я проверю ваш код и дам вам знать. Наслаждайтесь сообществом!
Просто соображение, мне нужно будет зацикливать массив в vuejs, когда это необходимо, знаете ли вы способ реализовать разбивку на страницы, если я разделю массив таким образом?
Извините, я не умею разбивать на страницы. Я новичок в JavaScript. Я знаю только ванильный JavaScript.
Не волнуйтесь, это не сложно. Я тестирую предложенное вами решение, но на данный момент кажется, что оно вообще не работает в vue. Я дам вам знать в любом случае
Это работало нормально. Теперь мои массивы разбиты на страницы. Я начну с этого момента, чтобы добавить разбиение на страницы в моем приложении Vue Electron. Спасибо за предложение
Здравствуйте, добро пожаловать в stackoverflow. Я попробую ваше предложение. На данный момент я использую функцию
Array.slice(), чтобы иметь копию исходного массива, которая назначается выделенной переменной в приложении vue. Моя идея состоит в том, чтобы реализовать бесконечную прокрутку, чтобы срез изменялся каждый раз, когда это необходимо, но я не уверен, что это будет работать должным образом.