//3 persons //Сделать три ассоциативных массива a, b, c, в каждом из которых должны быть поля name и surname. const a = new Map([ ['name', 'yaho'], ['surname', 'google'], ]); const b = new Map([ ['name', 'Liza'], ['surname', 'Babay'], ]); const c = new Map([ ['name', 'Coconut'], ['surname', 'Fish'], ]); //different fields //Добавьте некоторые другие поля (например age, fathername, sex (пол)) так, //что бы набор полей отличался у разных объектов a.set('age', 16); b.set('fatherName', 'Bob'); c.set('sex', 'male'); //fields check //Проверьте наличие необязательных полей у каждого из этих массивов. //Если поле найдено, выведите его с помощью alert.Проверку делайте по typeof или in в if. // if (a.has('age')) alert(`${a.get('age')} this is field`); // if (b.has('fatherName')) alert(`${b.get('fatherName')} this is field`); // if (b.has('sex')) alert(`${b.get('sex')} this is field`); //array of persons //Добавьте несколько ассоциативных массивов с персонами в обычный массив persons, //например a, b, c.Так же добавьте персону литерально({ ...}). //Получится обычный массив с элементами - ассоциативными массивами с персонами. const persons = [a, b, c]; //loop of persons //Сделайте цикл, который выводит весь массив persons //в форме объектов console.log(persons[i]) // for (let i = 0; i < persons.length; i++) { // console.log(persons[i]); // } //loop of name and surname //Сделайте цикл, который выводит весь массив persons, но только Имя и Фамилию каждой персоны. // for (let i = 0; i < persons.length; i++) { // const name = persons[i].get('name'); // const surname = persons[i].get('surname'); // console.log(name, surname); // } //loop of loop of values //Сделайте цикл, который выводит весь массив persons, //но только значения всех полей из объектов.Используйте вложенный цикл // for (let i = 0; i < persons.length; i++) { // for (let person of persons[i]) { // console.log(...person); // } // } //fullName //Сделайте цикл, которых добавляет поле fullName в каждый объект, //содержащий ФИО.Учтите, что поле fathername не является обязательным. // for (let i = 0; i < persons.length; i++) { // persons[i].set('fullName', i); // } //serialize //Создайте JSON-строку из persons // const serialize = JSON.stringify(persons.map((arr) => [...arr])); // console.log(jsonPersons); //deserialize //Создайте ассоциативный массив с одной персоной из JSON-строки. Добавьте её в persons // const deserialize = JSON.parse(serialize); // persons.push(new Map(deserialize[0])); // console.log(persons); //HTML //Сделайте цикл, который выводит весь массив persons, в форме HTML-таблицы. //Имя и Фамилия - колонки.Таблицы в HTML Пример кода: //Модифицируйте код так, что бы он выводил массив persons // const tableWrapper = document.getElementById('wrapper'); // let stringTable = ""; // for (let i = 0; i < persons.length; i++) { // stringTable += ``; // } // stringTable += '
${persons[i].get('name')}${persons[i].get( // 'surname' // )}
'; // tableWrapper.innerHTML += stringTable; //HTML optional fields //Сделайте цикл, который выводит весь массив persons, в форме HTML-таблицы. //Имя и Фамилия, а так же другие поля при наличии.Колонки: поля, строки таблицы - персоны. // const tableWrapper = document.getElementById('wrapper'); // let stringTable = ""; // persons[0].set('dddd', 'justForCheckDoesItWorks?'); // for (let i = 0; i < persons.length; i++) { // stringTable += ''; // for (let value of persons[i].values()) { // stringTable += ``; // } // stringTable += ''; // } // stringTable += '
${value}
'; // tableWrapper.innerHTML += stringTable; //HTML tr color //Добавьте к предыдущему примеру раскраску через строчку используя другой стиль тэга tr. // const tableWrapper = document.getElementById('wrapper'); // let stringTable = ""; // persons[0].set('dddd', 'justForCheckDoesItWorks?'); // for (let i = 0; i < persons.length; i++) { // stringTable += ``; // for (let value of persons[i].values()) { // stringTable += ``; // } // stringTable += ''; // } // stringTable += '
${value}
'; // tableWrapper.innerHTML += stringTable; //HTML th optional //Переработайте вывод persons в HTML с поиском всех возможных колонок во всех записях, выводом //названий колонок в заголовок HTML - таблицы.Для решения этой задачи вначале узнайте //множество полей(ключей) во всех записях(они не совпадают), выведите HTML - заголовок используя тэги < th >, //а потом выводите все записи.Ниже выведите все персоны построчно.Следите за корректностью колонок. //Для этого вам нужно итерировать общий набор колонок, а не каждую персону, колонки из которой могут отличаться от предыдущей. // const tableWrapper = document.getElementById('wrapper'); // let stringTable = ""; // persons[0].set('IsWorks?', 'justForCheckDoesItWorks?'); // for (let i = 0; i < persons.length; i++) { // stringTable += ``; // for (let [key, value] of persons[i].entries()) { // stringTable += ``; // stringTable += ``; // } // stringTable += ''; // } // stringTable += '
${key}${value}
'; // tableWrapper.innerHTML += stringTable; // Задание на синий пояс. //Сделать HTML-конструктор из деревянной структуры, которая была на прошлом занятии: const someTree = { tagName: 'div', //html tag subTags: [ //вложенные тэги { tagName: 'div', subTags: [ { tagName: 'div', text: 'some text', attrs: { color: 'green', }, }, { tagName: 'div', text: 'some text 2', attrs: { color: 'blue', }, }, ], attrs: { 'font-size': '48px', }, }, ], attrs: { border: 1, 'background-color': '#92cd00', width: '500px', }, }; //Для начала сделайте конструктор для верхнего уровня (в примере - table). //Потом с помощью копипасты сделайте то же самое с вложенным уровнем nestedTags(tr).Аналогично для уровня td. //Конструктор должен поддерживать вложенность до 3его уровня (как в примере). //В результате работы конструктора из примера выше должен получиться следующий HTML(в строке str): { /*
some text some text 2
*/ } //Переносы строк и отступы в результате не принципиальны, главное - структура HTML Проверьте ваш код на других структурах. // const tableWrapper = document.getElementById('wrapper'); // let stringTable = ''; // const htmlConstructor = (obj) => { // stringTable += `<${obj.tagName} style="`; // for (const [key, value] of Object.entries(obj.attrs)) { // stringTable += `${key}:${value};`; // } // stringTable += `">`; // for (const secondLevel of obj.subTags) { // stringTable += `<${obj.tagName} style="`; // for (const [key, value] of Object.entries(secondLevel.attrs)) { // stringTable += `${key}:${value};`; // } // stringTable += '">'; // for (const thierdLevel of secondLevel.subTags) { // stringTable += `<${obj.tagName} style="`; // for (const [key, value] of Object.entries(thierdLevel.attrs)) { // stringTable += `${key}:${value};`; // } // stringTable += '">'; // stringTable += `${thierdLevel.text}`; // stringTable += ``; // } // stringTable += ``; // } // stringTable += ``; // }; // htmlConstructor(someTree); // tableWrapper.innerHTML += stringTable; //destruct array //напишите код, который используя деструктуризацию положит: //четные числа в переменные even1, even2, //нечетные в odd1, odd2, odd3,буквы в отдельный массив // const [odd1, even1, odd2, even2, odd3, ...restArr] = [ // 1, // 2, // 3, // 4, // 5, // 'a', // 'b', // 'c', // ]; // console.log(odd1, even1, odd2, even2, odd3, restArr); //destruct string // число в переменную number // букву a в переменную s1 // букву b в переменную s2 // букву c в переменную s3 // const [number, [s1, s2, s3]] = [1, 'abc']; // console.log(number, s1, s2, s3); //destruct 2 //извлеките используя деструктуризацию имена детей в переменные name1 и name2 // const { // children: [{ name: name1 }, { name: name2 }], // } = { // name: 'Ivan', // surname: 'Petrov', // children: [{ name: 'Maria' }, { name: 'Nikolay' }], // }; // console.log(name1, name2); //destruct 3 //извлеките используя деструктуризацию объектов два первых элемента и длину массива в переменные a, b и length // const [first, second, ...restArr] = [1, 2, 3, 4, 5, 6, 7, 10]; // const { length } = restArr; // console.log(first, second, length); //Задание на черный пояс //Сделать предыдущее задание на черный пояс в упрощенном виде: не использовать четырехмерный массив //для хранения истории, а использовать ассоциативный массив: Например, если пользователь ввел 1212 //за последние четыре хода, то мы ищем то, что было введено последний раз после такой последовательности: // const predictArray = new Map(); // let hystory = ''; // const internalGame = () => { // const answer = confirm('Choose OK or Cancel') ? 0 : 1; // console.log(predictArray); // if (hystory.length === 3) { // hystory += answer; // predictArray.set(hystory, answer); // hystory = ''; // } else { // hystory += answer; // } // internalGame(); // }; // internalGame();