const shuffle = array => {
array.sort((a, b) => Math.random() > Math.random() ? 1 : -1);
}
const getInitialCount = () => {
const count = { '123':0,'132':0,'213':0,'231':0,'321':0,'312':0 };
return { ...count };
}
const output = (i, count) => console.log(`${i}: ${JSON.stringify(count, null, 2)}`);
const MAX = 1e4;
{
// 1st example
const count = getInitialCount();
for (let i = 0; i < MAX; i++) {
const arr = [1, 2, 3];
shuffle(arr);
count[arr.join('')]++;
}
output(1, count);
}
{
// 2nd example
const count = getInitialCount();
const arr = [1, 2, 3];
for (let i = 0; i < MAX; i++) {
shuffle(arr);
count[arr.join('')]++;
}
output(2, count);
}
1: {
"123": 2555,
"132": 1242,
"213": 2436,
"231": 1243,
"312": 1315,
"321": 1209
}
2: {
"123": 1659,
"132": 1641,
"213": 1644,
"231": 1673,
"312": 1660,
"321": 1723
}
const ferry = {};
const pusher = prop => item => (ferry[item.id] ??= []).push(item[prop]);
currentTariff.forEach(pusher('name'));
pets.forEach(pusher('pet'));
Будем заполнять изначально пустой объект ferry.[]
в ferry[item.id]
только этот id ещё неизвестен ferry. .push(item[prop])
.push(item['name'])
— это то же, что .push(item.name)
. Во втором — вместо "name" будет "pet".ferry
станет примерно такой: {
1: ['Andy', 'Dog'],
2: ['Bob', 'Cat', 'Parrot'],
}
мухиотображение отдельно.Бэк отдаёт данные. Как их рисовать – задача фронта.
Так одни и те же методы стандартного и хорошо документированного API будут достаточны для любого клиента: web, мобилки, бота в мессенжере.
P.S. разумеется, бэк не отдаёт 100 тыс. записей. Фильтрует и бьёт на страницы, отдаёт, например, 10 результатов – JSON массив с 10 объектами и инфой сколько там всего, какая сейчас страница и т.п.