Autor Zpráva
candiess
Profil
Zdravím, řeším pro mě zajímavou situaci. Zde je kod který se stará o převody stringů do polí a následném porovnávání.
<script>
allCats = data.success.toString().split(",").map(Number);

//Parsing rows
jQuery(".type-kraje").each(function() {

post_id = jQuery(this).attr("id");
cats = jQuery(this).find(".post-title .hidden .post_category").html();  //Example: <div class="post_category">135,145</div>
categories = cats.toString().split(",").map(Number);

//Dump všech kategorií daného článku
console.log(categories);

categories.forEach(function(catID) {
//inArr = jQuery.inArray(catID*1, allCats); // returns -1
inArr = allCats.indexOf(catID);    // returns -1

console.log("Do: "+post_id + " -- "+ catID + " -- Status: " + inArr);
});

});
</script>



allCats je pole toho, co uživatel muže upravovat
do categories se ukladaji kategorie daneho článku, ty pak splitnu a přes foreach kontroluji jestli je muže editovat

Datové typy jsem dodržel, viz mapování do Number, pole jsou také typu Array, dokáže mi někdo pomoci? Děkuji :)
Joker
Profil
candiess:
Tohle: cats.toString().split(",").map(Number); má udělat co?


Podle mě to je názorná ukázka, jak to řetězení metod dokáže člověka zblbnout. Metoda jQuery.map má dva argumenty, pole a funkci. Uvedené volání nedává smysl.
Oprava:
Tak je to názorná ukázka, jak to zblblo i mě :-)
Nejde o volání jQuery.map, ale Array.map. I tak to ale je špatně, protože Array.map má jako argument callback.


Krom toho:
post_id = jQuery(this).attr("id");
To mi připadá jako zbytečně ukecaná cesta k this.id.

cats = blabla.html();  //Example: <div class="post_category">135,145</div>
categories = cats.toString()
Metoda jQuery.html() může vrátit něco jiného než string? Já bych řekl, že ne.
A jestli obsah cats tak jako v komentáři, z toho split vznikne: ['<div class="post_category">135', '145</div>'] - co s tím pak?
Chamurappi
Profil
Reaguji na candiesse:
Podle screenshotu je v allCats pole řetězců, nikoliv pole čísel. Uvedený kód nenaznačuje, kudy se tam dostalo. Domnívám se, že si někde jinde přepisuješ allCats. Zjevně nepoužíváš var, takže kdo ví, kde sis to čím přepsal.


Reaguji na Jokera:
Metoda jQuery.map má dva argumenty
Tohle je nativní map na poli. Pokud candiess nepoužil nějaký polyfill, u části návštěvníků to skončí chybou…

jestli je obsah cats tak jako v komentáři
Myslím, že to je spíš jen matoucí komentář.
Joker
Profil
Chamurappi:
Tohle je nativní map na poli.

Už jsem se mezitím opravil. Ale to volání je špatně tak jako tak.
_es
Profil
Joker:
I tak to ale je špatně, protože Array.map má jako argument callback.
Nie je to zle, lebo Number je tiež funkcia. Teda až na to, že to niektoré prehliadače nepodporujú. Asi to má prevádzať prvky poľa na čísla.
Chamurappi
Profil
Reaguji na Jokera:
I tak to ale je špatně, protože Array.map má jako argument callback.
Nativní funkce Number stačí jako callback, převede svůj argument na číslo. Je to docela mazané.
Joker
Profil
Chamurappi [#6]:
Aha. Wow.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: