JavaScript

Перебор элементов массива

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();

}

Признаки "плохого кода"

Кратко рассмотрим 12 признаков, когда код можно улучшить: 1. Duplicated Code  — иногда повторяющийся код не всегда несет в себе пользу. Выде...