Skip to content

задание 4.16 #4

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
141 changes: 74 additions & 67 deletions js/main.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
const massive = [];

const NAMES = [
'Виктория', 'Дарья', 'Алексей', 'Александра', 'Сергей', 'Ульяна', 'Патрик', 'Александр', 'Марина', 'Станислав',

Check failure on line 2 in js/main.js

View workflow job for this annotation

GitHub Actions / Check

Expected indentation of 2 spaces but found 4
'Елизавета', 'Валентина', 'Егор', 'Фёдор', 'Ольга', 'Владимир', 'Анна', 'Людмила', 'Зоя', 'Виктор',

Check failure on line 3 in js/main.js

View workflow job for this annotation

GitHub Actions / Check

Expected indentation of 2 spaces but found 4
'Анатолий', 'Вадим', 'Светлана', 'Екатерина', 'Мария', 'Михаил', 'Иван', 'Илья', 'Дмитрий', 'Маргарита'

Check failure on line 4 in js/main.js

View workflow job for this annotation

GitHub Actions / Check

Expected indentation of 2 spaces but found 4
];
Expand All @@ -16,91 +14,100 @@
];

const DESCRIPTIONS = [
'Солнечный денёк.', 'Дорога к пляжу.', 'Шум прибоя.', 'Вот она-свобода!', 'Отдыхаем.', 'Черная молния.', 'На диете.',
'Санаторий "Железнодорожник".', 'Солнечный денёк.', 'Дорога к пляжу.', 'Шум прибоя.', 'Вот она-свобода!', 'Отдыхаем.', 'Черная молния.', 'На диете.',
'Заряд бодрости.', 'Первым делом-самолёты.', 'Разложить всё по полочкам.', 'Прямо пойдешь-к морюшку придёшь.',
'Зеленоглазое такси.', 'Радуга в тарелке.', 'Кексоролл.', 'Луностопы.', 'В погоне за мечтой.',
'Вместе весело шагать по просторам и, конечно, припевать лучше хором.', 'Без комментариев.', 'Волшебные калоши.', 'Пальма финиковая - 8 штук.',
'Все на ужин!', 'Как Магдалена, морская пена.', 'Я тебя съем.', 'Фаер-шоу в Турции.', 'Оставьте бегемота в покое!'
];

const PHOTOS_COUNT = 25;

const MIN_PHOTOS = 1;
const MAX_PHOTOS = 25;
const DESCRIPTIONS_COUNT = 25;

const MIN_LAKES = 15;

const MAX_LAKES = 200;

const MIN_COMMENTS = 0;

const MAX_COMMENTS = 30;

const MIN_AVATARS = 1;

const MAX_AVATARS = 6;

//Функция получения случайного числа из заданного диапазона

const getRandomInteger = (a, b) => {
const lower = Math.ceil(Math.min(a, b));
const upper = Math.floor(Math.max(a, b));
let previousResult = -1;
return () => {
const result = Math.floor(Math.random() * (upper - lower + 1) + lower);
if (previousResult !== result) {
previousResult = result;
return result;
};
return result === upper ? lower : result + 1;
};
const getRandomInteger = (min, max) => {
const lowerLimit = Math.ceil(Math.min(Math.abs(min), Math.abs(max)));
const upperLimit = Math.floor(Math.max(Math.abs(min), Math.abs(max)));
const RandomInteger = Math.random() * (upperLimit - lowerLimit + 1) + lowerLimit;
return Math.floor(RandomInteger);
};

//Вложенный объект Comments

const createComment = () => {
let id = 1;
const indexMessageArr = getRandomInteger(0, MESSAGES.length - 1);
const indexNameArr = getRandomInteger(0, NAMES.length - 1);
//Возвращаемая функция
return () => {
const comment = {};
const idAvatar = getRandomInteger(MIN_AVATARS, MAX_AVATARS);
comment.id = id;
comment.avatar = `img/avatar-${idAvatar()}.svg`;
comment.message = `${MESSAGES[indexMessageArr()]}. ${MESSAGES[indexMessageArr()]}`;
comment.name = `${NAMES[indexNameArr()]}`;
id++;
return comment;
};
};

//Количество комментариев

const numComments = getRandomInteger(MIN_COMMENTS, MAX_COMMENTS);
//Функция-генератор случайного положительного числа
const getUnique = (min, max) => {
const previousValues = [];

//Количество лайков
return function () {
let currentValue = getRandomInteger(min, max);

const numLakes = getRandomInteger(MIN_LAKES, MAX_LAKES);

//функция создания объекта
if (previousValues.length >= (max - min + 1)) {
console.error(`Перебраны все числа из диапазона от${min} до${max}`);
return null;
};

const createPhoto = () => {
let id = 1;
return () => {
const photo = {};
photo.id = id;
photo.url = `photos/${id}.jpg`;
//Массив описаний
photo.descriptions = Array.from({ length: DESCRIPTIONS_COUNT }, createComment());
photo.lakes = numLakes();
//Массив комментариев
photo.comments = Array.from({ length: numComments() }, createComment());
id++;
return photo;
while (previousValues.includes(currentValue)) {
currentValue = getRandomInteger(min, max);
};
previousValues.push(currentValue);
return currentValue;
};
};
//Массив фотографий

const photoArray = Array.from({ length: PHOTOS_COUNT }, createComment());

console.log(photoArray);
const getUniqueId = getUnique(MIN_PHOTOS, MAX_PHOTOS);
const getUniquePhoto = getUnique(MIN_PHOTOS, MAX_PHOTOS);

//Функция, возвращающая случайное значение из массива
const getRandomElement = (arr) => arr[getRandomInteger(0, arr.length - 1)];

//Функция, генерирующая один комментарий
const getComment = () => ({
id: getRandomInteger(MIN_COMMENTS, MAX_COMMENTS),
avatar: `img/avatar-${getRandomInteger(MIN_AVATARS, MAX_AVATARS)}.svg`,
massages: getRandomElement(MESSAGES),
name: getRandomElement(NAMES),
}
);

//Функция, генерирующая массив

/*const getComments = () => {
const count = getRandomInteger(MIN_COMMENTS, MAX_COMMENTS);
const comments = []
for (let i = 1; i <= count; i++) {
comments.push(getComment())
}
return comments;
};*/

const getComments = () => Array.from({ length: getRandomInteger(MIN_COMMENTS, MAX_COMMENTS) }, getComment);

//функция, создающая одну фотографию (возвращает один объект) //убрали return и фигурные скобки, добавили круглые скобки
const getPhoto = () => ({
id: getUniqueId(),
url: `photos/${getUniquePhoto()}.jpg`,
descriptions: getRandomElement(DESCRIPTIONS),
likes: getRandomInteger(MIN_LAKES, MAX_LAKES),
comments: getComments()
}
);


//как собрать25 фотографий в массив

/*const createPhotos = () => {
const result = [];
for (let i = MIN_PHOTOS; i <= MAX_PHOTOS; i++) {
result.push(getPhoto())
}
return result;
}*/

const createPhotos = () => Array.from({ length: MAX_PHOTOS }, getPhoto);

console.log(createPhotos())
Loading