Перебор элементов массива
const arr = [1, 2, 3];
arr.forEach(function(item, i, arr) {
console.log(item); // 1, 2, 3
console.log(i); // 0, 1, 2
console.log(arr); // [1, 2, 3]
});
Использование map
const newArray = arr.map(function(item, i, arr) {
console.log(item); // 1, 2, 3
console.log(i); // 0, 1, 2
console.log(arr); // [1, 2, 3]
return item;
});
Использование filter
let filteredArr = arr.filter(el => el <= 10); // [3, 5, 9]
let arr = [3, 5, 19, 1, 7, 23, 14, 9];
Использование сортировки
arr.sort((el1, el2) => {
if(el1 == el2) {
return 0;
} else if(el1 > el2) {
return 1;
} else if(el1 < el2) {
return -1;
}
});
console.log(arr); // [1, 3, 5, 7, 9, 14, 19, 23]
Метод reduce()
const array1 = [1, 2, 3, 4];
const reducer = (previousValue, currentValue) => previousValue + currentValue;
// 1 + 2 + 3 + 4
console.log(array1.reduce(reducer));
// expected output: 10
// 5 + 1 + 2 + 3 + 4
console.log(array1.reduce(reducer, 5));
// expected output: 15
Метод find()
let arr = [7, 6, 3, 5, 8, 2];
let result1 = arr.find(el => el % 4 == 0); // 8
let result2 = arr.find(el => el > 10); // undefined
Метод some()
let arr = [7, 6, 3, 5, 8, 2];
let result1 = arr.some(el => el % 4 == 0); // true
let result2 = arr.some(el => el > 10); // false
Метод every()
возвращает true, если все элементы массив удовлетворяют заданному критерию или false в противном случае. Критерий задается функцией.
let arr = [7, 6, 3, 5, 8, 2];
let result1 = arr.every(el => el % 4 == 0); // false
let result2 = arr.every(el => el < 10); // true
Синтаксис цикла for...in.
const person = {
name: 'Ivan',
lastName: 'Ivanov',
age: 30
};
for (const key in person) {
console.log('key: ', key);
};
// Результат
key: name
key: lastName
key: age
for...of
let arr = [1, 2, 3];
for(let item of arr)
console.log(item);
// Результат в консоли: 1 2
Прототипное наследование proto
let animal = {
eats: true,
walk() {
alert("Animal walk");
}
};
let rabbit = {
jumps: true,
__proto__: animal
};
// walk взят из прототипа
rabbit.walk(); // Animal walk
Performance - вывод времени выполнения операции
const t0 = performance.now();
for (let i = 0; i < array.length; i++)
{
// какой-то код
}
const t1 = performance.now();
console.log(t1 - t0, 'milliseconds');
Console.time - вывод времени выполнения операции
console.time('test');
for (let i = 0; i < array.length; i++) {
// какой-то код
}
console.timeEnd('test');
child_process
import child_process from "child_process"
const spawnChildProcess = async (args) => {
child_process.fork('./src/cp/files/script.js', args)
};
spawnChildProcess();
'./src/cp/files/script.js'
const args = process.argv.slice(2);
console.log(`Total number of arguments is ${args.length}`);
console.log(`Arguments: ${JSON.stringify(args)}`);
const echoInput = (chunk) => {
const chunkStringified = chunk.toString();
if (chunkStringified.includes('CLOSE')) process.exit(0);
process.stdout.write(`Received from master process: ${chunk.toString()}\n`)
};
process.stdin.on('data', echoInput);
worker_threads
import worker from "worker_threads"
const performCalculations = async () => {
let app = new Promise((resolve, reject) => {
let work = new Worker('/worker.js', 10)
work
})
};
await performCalculations();
import {parentPort, workerData} from "worker_threads"
const nthFibonacci = (n) => n < 2 ? n : nthFibonacci(n - 1) + nthFibonacci(n - 2);
const sendResult = () => {
let result = nthFibonacci(workerData);
parentPort(result);
};
sendResult();
Web-worker
На странице прописываем код:
function sendMessage() {
const text = document.getElementById('text').value;
const worker = new Worker("<?= \yii\helpers\Url::home(). 'css/worker.js' ?>" );
// Отправка сообщения в веб-воркер
worker.postMessage(text);
// Получение ответа от веб-воркера
worker.onmessage = function(event) {
const result = event.data;
console.log(" [x] Received %s", result);
};
}
"worker.js"
self.onmessage = function(event) {
const data = event.data;
// Выполнение вычислений или других задач в фоне
const result = doSomeBackgroundTask(data);
// Отправка ответа основному скрипту
self.postMessage(result);
};
// Функция для выполнения вычислений в фоновом режиме
function doSomeBackgroundTask(data) {
return data.toString().toUpperCase();
}