[1, 3]
– это оператор. Выражение во вторых квадратных скобках возвращает тройку, [3,2,2,8,5][3]
возвращает элемент массива с индексом 3, то есть четвёртый по счёту, то есть 8
.const getPrimitives = data =>
data instanceof Object
? Object.values(data).flatMap(getPrimitives)
: [ data ];
function getPrimitives(data) {
const result = [];
const stack = [];
for (let i = 0, arr = [ data ]; i < arr.length || stack.length; i++) {
if (i === arr.length) {
[ i, arr ] = stack.pop();
} else if (arr[i] instanceof Object) {
stack.push([ i, arr ]);
[ i, arr ] = [ -1, Object.values(arr[i]) ];
} else {
result.push(arr[i]);
}
}
return result;
}
// или
function getPrimitives(data) {
const result = [];
for (const stack = [ data ]; stack.length;) {
const n = stack.pop();
if (n instanceof Object) {
stack.push(...Object.values(n).reverse());
} else {
result.push(n);
}
}
return result;
}
// или
function getPrimitives(data) {
const result = [].concat(data);
for (let i = 0; i < result.length; i++) {
const n = result[i];
if (n instanceof Object) {
result.splice(i--, 1, ...Object.values(n));
}
}
return result;
}
if(links.every(link => isVisited(link))) {
unblockSpecialLink();
}
(async () => {
const result = await {
then(resolve) {
console.log('Привет сахар');
setTimeout(() => resolve(10), 3000);
}
};
console.log('Ух ты, данные из таймера:', result);
})();
(async () => {
try {
await {
then(_, reject) {
console.log('Привет сахар');
reject(new Error('Ошибочка'));
}
};
console.log('Это никогда не выполнится');
} catch (e) {
console.log('Ух ты, эксепшн:', e);
}
})();
console.log('Промисы никуда не делись?', (async () => {})() instanceof Promise)
-1 ? 1 : 2
значение -1 приводится к типу boolean и получается true-1 == true
значение true приводится к числу и получается 1===
и !==
) и приводить типы явно const result = arr.reduce((acc, n, i) => (
(i & 1) || acc.push(0),
acc[~-acc.length] += n,
acc
), []);
function chunked(data, chunkSize) {
return Array.prototype.reduce.call(
data,
(acc, n, i) => ((acc[i / chunkSize | 0] ??= []).push(n), acc),
[]
);
}
function sum(data, val = n => n) {
const getVal = val instanceof Function ? val : n => n[val];
return Array.prototype.reduce.call(
data,
(acc, n) => acc + getVal(n),
0
);
}
const result = chunked(arr, 2).map(n => sum(n));
function formatDate(str) {
const d = new Date(str.replace('_', ' 1, '));
d.setMonth(d.getMonth() - 1);
return d.toLocaleDateString('en-US', {
month: 'short',
year: 'numeric',
}).replace(' ', '_');
}
formatDate('Feb_2021') // "Jan_2021"
formatDate('Jan_2000') // "Dec_1999"