async function processData(data, process, chunkSize, delay) {
let i = -1;
for (const n of data) {
if (++i === chunkSize) {
i = 0;
await new Promise(r => setTimeout(r, delay));
}
process(n);
}
}
processData(Array(10).keys(), console.log, 3, 1500).then(() => console.log('DONE'));
for (const [ index, el ] of Object.entries(elems)) {
...
for (const [ index, el ] of Array.prototype.entries.call(elems)) {
...
const elems = [...document.getElementsByClassName('one')];
for (const [ index, el ] of elems.entries()) {
...
const elems = document.querySelectorAll('.one');
for (const [ index, el ] of elems.entries()) {
...
Object.values(names.reduce((acc, n) => {
const g = /^\d/.test(n[0]) ? n[0] : /^[А-Я]/i.test(n[0]) ? 'А-Я' : null;
g && (acc[g] = acc[g] || [ g ]).push(n);
return acc;
}, {}))
<div class="items"></div>
.<select>
<option value="*">Все</option>
<option value=".red">Красные</option>
<option value=".blue">Синие</option>
<option value=".green">Зеленые</option>
</select>
$('select').change(function() {
const selector = this.value;
const $items = $('.items >');
$items.filter(selector).slideDown();
$items.not(selector).slideUp();
});
const compareArrays = (a, b) => a.length === b.length && a.every((n, i) => n === b[i]);
arr.reduceRight((_, n, i, a) => indexes.includes(i) && a.splice(i, 1), null);
// или
[...indexes].sort((a, b) => b - a).forEach(i => arr.splice(i, 1));
// или
arr.splice(0, arr.length, ...arr.filter((n, i) => indexes.indexOf(i) === -1));
const newArr = arr.filter(((indexes, n, i) => !indexes.has(i)).bind(null, new Set(indexes)));
async function request(data) {
let result = data;
do {
result = await запрос(result);
} while (result не тот, который нужен);
return result;
}
function requestRecursive(data) {
return запрос(data).then(result => {
return result тот, который нужен
? result
: requestRecursive(result);
});
}
const values = Object.values(obj);
const count = values.flat().length;
// или
const count = [].concat(...values).length;
// или
const count = values.reduce((acc, n) => acc + n.length, 0);
// или
const count = eval(values.map(n => n.length).join('+')) || 0;
a = [ 1, 2, 3 ];
b = [ 4, 5, 6 ];
c = a;
// здесь должен быть какой-то код
console.log(a); // [ 4, 5, 6 ]
console.log(b); // [ 1, 2, 3 ]
console.log(a === c); // true
b.splice(0, b.length, ...a.splice(0, a.length, ...b));
Array.from(new Set(arr.flat()))
// или, без создания промежуточного массива
[...arr.reduce((acc, n) => (n.forEach(m => acc.add(m)), acc), new Set)]
Object.keys([].concat(...arr).reduce((acc, n) => (acc[n] = 1, acc), {}))
// или
Array.prototype.concat.apply([], arr).filter((n, i, a) => i === a.indexOf(n))
// или
`${arr}`.split(',').reduce((acc, n) => (acc.includes(n) || acc.push(n), acc), [])
// или
String(arr).match(/\w/g).sort().filter((n, i, a) => n !== a[i - 1])
// или
arr.toString().match(/(\w)(?!.*\1)/g) || []
function someFunction([ ,,, id,, status ]) {
function someFunction({ 3: id, 5: status }) {
this
внутри обработчика клика? Не тем, что вам кажется. Замените $(this).attr("href")
на $(event.target).attr("href")
или стрелочную функцию на обычную. msg.razd
массив значений:const arr = Object.values(msg.razd);
.const categories = arr.flatMap(n => n.category);
// или
const categories = [].concat.apply([], arr.map(n => n.category));
// или
const categories = arr.reduce((acc, n) => (acc.push(...n.category), acc), []);
const result = categories.filter(n => expect.includes(n._id));
// или
const result = categories.filter(function(n) {
return this.has(n._id);
}, new Set(expect));
// или
const categoriesObj = Object.fromEntries(categories.map(n => [ n._id, n ]));
const result = expect.reduce((acc, n) => ((n = categoriesObj[n]) && acc.push(n), acc), []);