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.
radsej by som kazdy z tych dvoch prvkov porovnal osobitne. Takto mozno porovnavas smerniky (= pointery), alebo co to ma javascript.
A mozno aj priradzujes pointery, v tom predchadzajucom riadku, naco vobec ma sluzit takyto program?
To není program, ale elementární kód.
K Čemu to celé má sloužit ani psát nebudu
Tak nie "program", naco tam mas tu premennu, ked mozes priamo porovnavat hodnoty[i].
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é)
OK. V tom případě to udělám raději celé jinak .