JavaScript test
10.2K subscribers
3.05K photos
6 videos
4.43K links
Проверка своих знаний по языку JavaScript.

Ссылка: @Portal_v_IT

Сотрудничество: @oleginc, @tatiana_inc

Канал на бирже: telega.in/c/js_test

РКН: clck.ru/3KHeYk
Download Telegram
🧠Что будет на выходе?

const numbers = [2, 4, 6, 8, 10];

const result = numbers.reduce((acc, val) => {
acc[val] = val * 2;
return acc;
}, {});

console.log(result);


Ответ: { 2: 4, 4: 8, 6: 12, 8: 16, 10: 20 }

JavaScript test | ChatGPT | #JavaScript
Работа с асинхронными запросами (AJAX)

Этот код выполняет асинхронный GET-запрос к серверу и обрабатывает ответ в формате JSON.

JavaScript test | ChatGPT | #JavaScript
🧠Что будет на выходе?

for (var i = 0; i < 3; i++) {
const log = () => {
console.log(i)
}
setTimeout(log, 100)
}


Ответ: 3, 3, 3

JavaScript test | ChatGPT | #JavaScript
🧠Что будет на выходе?

function* generator() {
yield 1;
yield 2;
yield 3;
}

const gen = generator();

const { value, done } = gen.return('early');

console.log(value, done);


Ответ: 'early', true

JavaScript test | ChatGPT | #JavaScript
🧠Что будет на выходе?

const string = "Lorem ipsum dolor sit amet";

const result = string.split(" ")
.map(word => word.toLowerCase())
.reduce((acc, word) => {
acc[word] = (acc[word] || 0) + 1;
return acc;
}, {});

console.log(result);


Ответ: { amet: 1, dolor: 1, ipsum: 1, lorem: 1, sit: 1 }

JavaScript test | ChatGPT | #JavaScript
Рекурсия и оптимизация рекурсивных функций

В первой части кода есть простая рекурсивная функция factorial, которая вычисляет факториал числа n. Она вызывает себя с аргументом n - 1, пока n не станет меньше или равно 1.

Во второй части кода представлена оптимизированная версия функции factorialMemoized, которая использует мемоизацию. Мемоизация - это техника, при которой результаты предыдущих вызовов функции сохраняются в памяти и возвращаются в случае повторного вызова с теми же аргументами. В данном случае, мы используем объект memo для хранения результатов предыдущих вызовов factorialMemoized. Если результат уже вычислен для конкретного n, мы возвращаем его из memo, иначе вычисляем и сохраняем в memo.

Таким образом, оптимизированная версия factorialMemoized более эффективна при вычислении факториала для больших чисел, так как избегает переполнения стека вызовов, и вычисляет результаты только один раз для каждого n.

JavaScript test | ChatGPT | #JavaScript
🧠Что будет на выходе?

const emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
const emails = ["user@example.com", "john.doe@gmail.", "invalid-email", "info@company.org"];

const validEmails = emails.filter(email => emailPattern.test(email));

console.log(validEmails);


Ответ: ["user@example.com", "info.company.org"]

JavaScript test | ChatGPT | #JavaScript
🧠Что будет на выходе?

const matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
];

let flattenedMatrix = [];

for (let i = 0; i < matrix.length; i++) {
for (let j = 0; j < matrix[i].length; j++) {
flattenedMatrix.push(matrix[i][j]);
}
}

console.log(flattenedMatrix);


Ответ: [1, 2, 3, 4, 5, 6, 7, 8, 9]

JavaScript test | ChatGPT | #JavaScript
🧠Что будет на выходе?

const data = [1, 2, 3, 4, 5];

const result = data.flatMap(num => Array(num).fill(num * 2));

console.log(result);


Ответ: [2, 4, 4, 6, 6, 6, 8, 8, 8, 8, 10, 10, 10, 10, 10]

JavaScript test | ChatGPT | #JavaScript
🧠Что будет на выходе?

const sym = Symbol('unique');
const obj = {
[sym]: 'symbol value',
a: 1,
b: 2
};

const keys = Object.keys(obj);
const symbols = Object.getOwnPropertySymbols(obj);

console.log(keys.length, symbols.length);


Ответ: 2, 1

JavaScript test | ChatGPT | #JavaScript
🧠Что будет на выходе?

const words = ['apple', 'banana', 'cherry'];

const result = words.flatMap(word => word.split('').reverse());

console.log(result);


Ответ: ['e', 'l', 'p', 'p', 'a', 'e', 'n', 'a', 'b', 'h', 'c', 'e', 'r', 'r', 'y']

JavaScript test | ChatGPT | #JavaScript
🧠Что будет на выходе?

const items = [1, 2, 3, 4, 5];

const result = items.reduce((acc, val) => acc.concat(Array.from({ length: val }, () => val)), []);

console.log(result);


Ответ: [1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5]

JavaScript test | ChatGPT | #JavaScript
🧠Что будет на выходе?

const data = [1, 2, 3, 4, 5];

const result = data.map(num => Array.from({ length: num }, (_, index) => index + 1));

console.log(result);


Ответ: [[1], [1, 2], [1, 2, 3], [1, 2, 3, 4], [1, 2, 3, 4, 5]]

JavaScript test | ChatGPT | #JavaScript
Работа с локальным хранилищем

localStorage позволяет хранить данные на стороне клиента (в браузере). Методы setItem() используются для записи данных, getItem() для чтения данных и removeItem() для удаления данных из локального хранилища.

JavaScript test | ChatGPT | #JavaScript
🧠Что будет на выходе?

const obj = {
value: 1,
method() {
return this.value;
}
};

const boundMethod = obj.method.bind({ value: 2 });
console.log(boundMethod());


Ответ: 2

JavaScript test | ChatGPT | #JavaScript
🧠Что будет на выходе?

const obj1 = { a: 1 };
const obj2 = { b: 2 };
Object.setPrototypeOf(obj2, obj1);

console.log('a' in obj2);
console.log(obj2.hasOwnProperty('a'));
console.log(obj2.__proto__.a);


Ответ: true, false, 1

JavaScript test | ChatGPT | #JavaScript
🧠Что будет на выходе?

const array = [1, 2, 3, 4, 5];

const result = array.map(num => Promise.resolve(num * 2));

console.log(result);


Ответ: [Promise, Promise, Promise, Promise, Promise]

JavaScript test | ChatGPT | #JavaScript
🧠Что будет на выходе?

const matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
];

async function complexMatrixOperation(matrix) {
const result = await Promise.all(matrix.map(async row => {
return await Promise.all(row.map(async num => {
if (num % 2 === 0) {
return await new Promise(resolve => setTimeout(() => resolve(num * 3), 200));
} else {
return await new Promise(resolve => setTimeout(() => resolve(num * 2), 100));
}
}));
}));

console.log(result);
}

complexMatrixOperation(matrix);


Ответ: [[2, 6, 6], [12, 10, 18], [14, 24, 18]]

JavaScript test | ChatGPT | #JavaScript
🧠Что будет на выходе?

const fetchData = async (id) => {
return new Promise((resolve) => {
setTimeout(() => resolve(`Data for ID ${id}`), 100);
});
};

const ids = [1, 2, 3];

async function complexAsyncFetch(ids) {
const result = await ids.reduce(async (acc, id) => {
const data = await fetchData(id);
const currentResult = await acc;
currentResult.push(data);
return currentResult;
}, Promise.resolve([]));

console.log(result);
}

complexAsyncFetch(ids);


Ответ: ['Data for ID 1', 'Data for ID 2', 'Data for ID 3']

JavaScript test | ChatGPT | #JavaScript
🧠Что будет на выходе?

async function asyncFunc() {
return 'async';
}

function promiseFunc() {
return new Promise(resolve => resolve('promise'));
}

(async function() {
const result = await (true ? asyncFunc() : promiseFunc());
console.log(result);
})();



Ответ: async


JavaScript test | ChatGPT | #JavaScript
🧠Что будет на выходе?

const data = [1, 2, 3, 4, 5];

const result = data.reduce((acc, val) => acc.concat(Array.from({ length: val }, (_, index) => val + index)), []);

console.log(result);


Ответ: [1, 2, 3, 3, 4, 5, 4, 5, 6, 7, 5, 6, 7, 8, 9]

JavaScript test | ChatGPT | #JavaScript