Autor Zpráva
TomasJ
Profil
Dobrý večer všem.
Mám takový problém s funkcí sort();
Když použiji v nějaké vlastní funkci, funkci sort();, jak ji můžu zase vrátit do původního stavu?
Mám kód takhle:
<html>
  <head>
  <script type="text/javascript">
  var a = new Array("jablka","višně","třešně","hrušky","111","169","215",".jpg");
  function Sorted(input)
  {
  input.sort();
  var b=0;
  for(c=0;c<input.length;c++){if(!b){b=(c+1)+". "+input[c];}else{b+="<br>"+(c+1)+". "+input[c];}}
  insert(b,"info");
  }
  
  function UnSorted(input)
  {
  var b;
  for(c=0;c<input.length;c++){if(!b){b=(c+1)+". "+input[c];}else{b+="<br>"+(c+1)+". "+input[c];}}
  insert(b,"info_orig");
  }
  function insert(text,cilove_id)
  {
  var elem = document.getElementById(cilove_id);
  if(!elem){document.write("Zadané ID &quot;"+cilove_id+"&quot; neexistuje v tomto HTML souboru.<br>Pro vytvoření napiš do &lt;body&gt; &lt;/body&gt; tento tag:<br>&lt;span id=&quot;"+cilove_id+"&quot;&gt;&lt;/span&gt;");}
  else{elem.innerHTML=text;}
  }
  </script>
  <title>Sort();</title>
  </head>
  <body onload="UnSorted(a);Sorted(a);">
  <h5>Seřazený:</h5>
  <span id="info"></span><br>
  <h5>Originál:</h5>
  <span id="info_orig"></span>
  </body>
</html>

I když používám funkci sort(); až ve vlastní funkci, stejně seřadí Array i pro další použití... Všimněte si, že mám v události onload (v body) napřed UnSorted a pak Sorted. Když je v obráceném pořadí zapsáno, tedy napřed Sorted a pak UnSorted, tak vyjde obojí stejně. Nevíte o něčem, co dokáže navrátit původní seřazení "od výrobce", abych mohl klidně použít UnSorted až za Sorted? Tedy aby UnSorted opravdu zobrazilo originální seřazení, i když už nějaká funkce obsah seřadila?
jksdf
Profil
uložiť si to do druhého poľa - to pôvodné
TomasJ
Profil
Máte na mysli
var a = new Array(...);
var a_orig = a;

?

EDIT: Chápu to tedy tak, že žádná taková funkce neexistuje. Je to tak?
Witiko
Profil
Takhle se neukládá, takhle se do obou proměnných uloží jeden odkaz na stejný objekt pole. Takhle se kopírují pole:
var pole1 = [...];
pole2 = pole1.slice(0);
TomasJ
Profil
Děkuji za radu.

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:

0