Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno JavaScript: Banální porovnání prvků v poli

Mám pole hodnot:
var hodnoty = [[7, 9], [12, 11],[3,12],[33,10],[55,13],[14,2]];

A potrebuji zjistit kdy se nachazim v poli o určitých hodnotách.
Například jak uvést pravou stranu podmínky if, aby když zálohuju pole původní prvek třeba [55, 13]
aby byl zavolan ten alert
Takhle:
[js]var hodnoty = [[7, 9], [12, 11],[3,12],[33,10],[55,13],[14,2]];
var ZalohujHodnoty = [[0,0]];
function ZalohujFunkce()
{
for (var i = 0; i < hodnoty.length; ++i)
{
ZalohujHodnoty[i] = hodnoty[i];
if (ZalohujHodnoty[i] == ([55, 13] ) // Tohle porovnani to nikdy nevezme jako true !
{
alert("Shoda !!!");
}

}

}

[/js]
Chybu mam asi v syntaxi na pravé straně podmínky if, protože alert("Shoda !!!"); se neprovede nikdy.

Předmět Autor Datum
radsej by som kazdy z tych dvoch prvkov porovnal osobitne. Takto mozno porovnavas smerniky (= pointe…
MM.. 14.03.2006 14:07
MM..
To není program, ale elementární kód. :-D K Čemu to celé má sloužit ani psát nebudu :-/
Flash_Gordon 14.03.2006 14:15
Flash_Gordon
Tak nie "program", naco tam mas tu premennu, ked mozes priamo porovnavat hodnoty[i].
MM.. 14.03.2006 14:17
MM..
Zhoda nenastane nikdy, pretože polia sa neporovnávajú hodnotou, ale referenciou (tie polia sú dva rô…
los 14.03.2006 14:17
los
OK. V tom případě to udělám raději celé jinak :-( . poslední
Flash_Gordon 14.03.2006 14:22
Flash_Gordon

Zhoda nenastane nikdy, pretože polia sa neporovnávajú hodnotou, ale referenciou (tie polia sú dva rôzne objekty, hoci obsahujú rovnaké hodnoty).

Čiže si musíš spraviť vlastnú funkciu, ktorá vzájomne porovná všetky prvky poľa:
[js]function compare (a, b)
{
if (a.length != b.length)
return false;

for (var i = 0; i < a.length; ++i)
if (a [i] != b [i])
return false;

return true;
}

if (compare (ZalohujHodnoty [i], [55, 13]))
alert ("Shoda !!!");
[/js]

Hoci v tomto konkrétnom prípade by som asi použil jednoduchšie:
[js]if (ZalohujHodnoty [i].join () == "55,13")
alert ("Shoda !!!");
[/js]

// edit
[js]ZalohujHodnoty [i] = hodnoty [i];[/js]
Tento riadok nezálohuje hodnoty (nevytvorí kópiu hodnôt), iba si zapamätáš referenciu na prvok poľa (dvojicu [a, b]).

(netestované)

Zpět do poradny Odpovědět na původní otázku Nahoru