data
, где хранятся собственные данные инстанса компонента.<script>
export default {
data() {
return {
isOpen: false,
}
}
methods: {
toggle: () => this.isOpen = !this.isOpen,
}
}
</script>
function(err, results)
, которую вызовут позже, "потом", когда до-олгая операция запроса к БД завершится.async function intervalParserGroup(connect) {
const queryAllTable = 'SHOW TABLES FROM communities_auto';
const arrAllNameTable = [];
await new Promise((resolve, reject) => {
connect.query(queryAllTable, (err, results) => {
if (err) reject(err);
arrAllNameTable.push(results);
resolve();
});
});
console.log(arrAllNameTable);
}
+
это унарный оператор, который пробует преобразовать единствернный аргумент в число."321" // строка "321"
+"321" // число 321
+"123".split('').reverse().join('') // 321
-
примерно такой же, только негативит аргумент.('a').toUppercase() // "A"
и добавить хвост из повторов строчной после ('A').toLowerCase() // "a"
. ("x").repeat(3) // "xxx"
map(func)
вторым аргументом передаёт в функцию внутри индекс элемента: 0, 1, 2, ...
[ ...'acdc' ] // [ "a", "c", "d", "c" ]
const accum = alph => [...alph]
.map((c, i) => c.toUpperCase() + c.toLowerCase().repeat(i))
.join('-');
async
/ await
не меняет асинхронной сути исполнения. Перечитайте, что ли, про awync / await. const text = 'night has rolled out redesigned 3d hd';
const blacklist = [ 'night', 'year', 'when', 'you', 'can' ];
const exist = blacklist.some(word => text.includes(word));
exist // true
arr.map(item => Object.fromEntries([item]))
const resultArr = [];
for (let i = 0; i < arr.length; i++) {
const item = arr[i];
const obj = {};
obj[item[0]] = item[1];
resultArr.push(obj);
}
const resultArr = [];
for (let [prop, value] of arr) {
const obj = { [prop]: value };
resultArr.push(obj);
}
9007199254740991 // максимальное безопасное целое
17848907461544179 // ваш ID больше – происходят округления
post_id
в кавычках, как строки. const url = new URL(window.location);
url.searchParams.set('qna', 'habr');
window.history.pushState({}, '', url);
// в адресной строке теперь ?qna=habr
this
в JavaScript.this
равен глобальному объекту. Если включить строгий режим, вместо Window
получим undefined
.this
. const delay = seconds => new Promise(res => setTimeout(res, 1000 * seconds));
const parse = async () => {
// ...
};
const main = async () => {
await delay(10); // подождать 10 секунд
await parse(); // что-то там спарсить
reloadPage(); // перезагрузить страницу
};
window.addEventListener('load', main);
var
переменная i
всплывает наверх, видна отовсюду и 3
по окончании цикла. Это не то, что задумано.const
и let
чудесным образом исправляет досадное недоразумение:const arr = []; // ведь сам массив не планируется заменять
for (let i = 0; i <= 2; i++) { // главное: i теперь видна только внутри цикла
arr[i] = function () {
console.log(i);
};
}
arr[0](); // 0
arr[arr.length - 1](); // 2
в исходном коде только лишь заменили var
на const
(не так важно) и let
(вот это изменило всё!).const arr = [];
for (let i = 0; i <= 2; i++) {
arr[i] = () => console.log(i);
}
[ключ, значение]
методом fromEntries():Object.fromEntries(arr.map((v, i) => [i + 1, v]))
map()
создаётся новый, где каждый элемент это тоже массив:[ [1, 'a'], [2, 'b'], ... ]
Object.fromEntries()
для получения искомого объекта.const arr = [ 1, 2, 3, 4, 5, 6, 7] ;
const html = `<table><tbody>
${ arr.map(n => `<tr><td>${n}</td></tr>`).join() }
</tbody></table>`;
document.write(html); // вообще так лучше не делать
const table = document.createElement('table');
const rows = arr.map(n => `<tr><td>${n}</td></tr>`).join();
table.innerHTML = rows;
document.body.appendChild(table);
let
— const
)