Autor | Zpráva | ||
---|---|---|---|
candiess Profil |
#1 · Zasláno: 12. 11. 2014, 14:47:17
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"); this.id .
cats = blabla.html(); //Example: <div class="post_category">135,145</div> categories = cats.toString() 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 |
#3 · Zasláno: 12. 11. 2014, 15:31:49
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 |
#4 · Zasláno: 12. 11. 2014, 15:33:45
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 |
#6 · Zasláno: 12. 11. 2014, 15:38:10
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 |
#7 · Zasláno: 12. 11. 2014, 15:41:00
Chamurappi [#6]:
Aha. Wow. |
||
Časová prodleva: 9 let
|
0