echo implode("\n", array_map(fn($n) => "$n[0] $n[2]", array_filter($arr, fn($n) => $n[1])));
function haveSameValues(arr1, arr2) {
if (arr1.length !== arr2.length) {
return false;
}
const count = new Map;
arr1.forEach(n => count.set(n, -~count.get(n)));
arr2.forEach(n => count.set(n, ~-count.get(n)));
for (const n of count.values()) if (n) {
return false;
}
return true;
}
haveSameValues(
[ 'hello, world!!', 0, 0, 0, 1, 1, false, false ],
[ false, false, 1, 1, 0, 0, 0, 'hello, world!!' ]
) // true
haveSameValues(
[ 1, 2, 3 ],
[ 3, 2, 2 ]
) // false
haveSameValues(
[],
[]
) // true
const count = (arr, val) => arr.filter(n => n === val).length;
// или
const count = (arr, val) => arr.reduce((acc, n) => acc + (n === val), 0);
function Counter(data, key = n => n) {
const counted = new Map;
for (const n of data) {
const k = key(n);
counted.set(k, (counted.get(k) ?? 0) + 1);
}
return k => counted.get(k) ?? 0;
}
const arr = [ 1, 1, NaN, 1, 2, NaN, 9, NaN, NaN, 9, 7, 'hello, world!!', 'hello, world!!' ];
const counted = Counter(arr);
console.log(counted(1)); // 3
console.log(counted(NaN)); // 4
console.log(counted('hello, world!!')); // 2
console.log(counted(10)); // 0
<span class="color">red</span>
<span class="color">green</span>
<span class="color">red</span>
<span class="color">red</span>
const counted = Counter(document.querySelectorAll('.color'), el => el.innerText);
console.log(counted('red')); // 3
console.log(counted('blue')); // 0
function addChildrenIds(&$arr) {
$ids = [];
if (is_array($arr)) {
foreach ($arr as &$n) {
$n['childrenIds'] = addChildrenIds($n['children']);
array_push($ids, $n['id'], ...$n['childrenIds']);
}
}
return $ids;
}
ругается на сайд эффект, что я в рэндере меняю состояние массива
answers={shuffleArray(currentQuestion.answers)}
answers={shuffleArray([...currentQuestion.answers])}
usort($variants, function($a, $b) {
return strcmp($a->name, $b->name);
});
ind.map(((data, n) => data[n]).bind(null, arr.reduce((acc, row) => {
const d = acc[row[0]];
row.forEach((n, i) => i && (d[i] = d[i] || []).push(n));
return acc;
}, ind.reduce((acc, n) => (acc[n] = [ n ], acc), {}))))
for (let i = arr.length; i--;) {
const exists = arr.hasOwnProperty(i);
if (exists || !i) {
arr.length = i + exists;
break;
}
}
for (let i = arr.length; i-- && !(i in arr); arr.pop()) ;
echo implode('<br>', array_map(function($n, $i) use(&$result) {
return
"Книгу ".$result['BOOKS'][$i]['bookName'].
" написали для машины ".$n['name']." в ".$n['year'].
" году, можно заказать по электронной почте ".$result['BOOKS'][$i]['authorEmail'];
}, $result['CARS'], array_keys($result['BOOKS'])));
есть массив индексов[0, 3, 1, empty, 2]
<...>
должно быть -[100, 400, 200, empty, 300]
for (let i = 0; i < indexes.length; i++) {
if (indexes.hasOwnProperty(i)) {
arr.push(arr[indexes[i]]);
} else {
arr.length++;
}
}
arr.splice(0, arr.length - indexes.length);
arr.splice(0, arr.length, ...indexes.map(i => arr[i]));
$k = array_keys($arr);
$v = array_values($arr);
sort($k);
sort($v);
$arr = array_combine($k, $v);
array_splice($arr, 2, 0, 'Груши');
А если мы не знаем порядковый номер нового элемента, но знаем после какого элемента будет стоять новый, то как быть?
array_splice($arr, array_search('Виноград', $arr) + 1, 0, 'Груши');
function someFunction([ ,,, id,, status ]) {
function someFunction({ 3: id, 5: status }) {
const uniqueWithSum = (arr, idKey, sumKey) =>
Object.values(arr.reduce((acc, n) => {
const id = n[idKey];
acc[id] = acc[id] || Object.assign(new n.constructor, n, { [sumKey]: 0 });
acc[id][sumKey] += n[sumKey];
return acc;
}, {}));
// ваш случай
const result = uniqueWithSum(arr, 'id', 'duration');
// элементам не обязательно быть объектами, это могут быть и массивы
uniqueWithSum([
[ 'A', 1 ],
[ 'B', 5 ],
[ 'A', 2 ],
[ 'A', 3 ],
], 0, 1) // [ [ 'A', 6 ], [ 'B', 5 ] ]
numbers = [n for n in range(1000, 10000)]
numbers = list(range(1000, 10000))