Rekurzió
Lenne egy egyszerű feladat: nested tömbben megszámolni egy adott elem gyakoriságát, rekurzív módon.
Nekem van egy megoldásom, de nem igazán tetszik és érdekelne más megoldás.Ami nem tetszik:
- van benne egy 'for'
- biztos van szebb megoldas :)
■ Nekem van egy megoldásom, de nem igazán tetszik és érdekelne más megoldás.
function countItems(arr, item) {
var result = 0;
(function count(arr, item){
for (var i=0; i<arr.length; i++){
if (Array.isArray(arr[i])){
count(arr[i], item);
} else if (arr[i] === item) {
result++;
}
}
})(arr, item);
return result;
}
var arr = [
["banana", "strawberry", "apple", ["banana", "strawberry", "apple", ["apple"]], "apple"],
"apple",
["banana", "strawberry", "apple", ["banana", "strawberry", "apple"]]
];
console.log(countItems(arr, "apple"));
- van benne egy 'for'
- biztos van szebb megoldas :)
L'art pour L'art
Also.. a külső szkópban lévő counter nem túl szép, miért nem a függvény eredménye?
Lehet, hogy felreertelek, de
Megmutatnad, hogy hogyan tudom elhagyni a kulso szkopban levo valtozot? Koszi!
slice
Nincs már benne TCO: link
Nem követem
Hát én inkább
reduce + closure
for
ciklussal (vagy itt használhatnálfor of
ciklust is).Jó ez így. Modernebb js-nél
Ha adatbázisban csinálod, akkor ilyesmi ajánlott inkább: http://weblabor.hu/cikkek/hierarchikusadatkezeles1
Igen, nem ES6-os megoldasra
Miert kell ennyire a rekurziv
Hat erre gondoltam, nagyon
Szerintem ezek sokkal szebb megoldasok mint az enyem...
A lényeg szempontjából
Persze, tudom, egyszeruen
Teszem hozza, hogy a 3. az, amit leginkabb hasznalnek, az elso ketto sokkal idoigenyesebb (is), de latni szerettem volna, hogyan lehet meg megcsinalni.
Ott egy if-else szerencsésebb
For
- van benne egy 'for'
Semmi. Nekem van olyan
Ez segít?
Úgy látszik másnak is volt