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:
1<html>
2  <head>
3  <script type="text/javascript">
4  var a = new Array("jablka","višně","třešně","hrušky","111","169","215",".jpg");
5  function Sorted(input)
6  {
7  input.sort();
8  var b=0;
9  for(c=0;c<input.length;c++){if(!b){b=(c+1)+". "+input[c];}else{b+="<br>"+(c+1)+". "+input[c];}}
10  insert(b,"info");
11  }
12  
13  function UnSorted(input)
14  {
15  var b;
16  for(c=0;c<input.length;c++){if(!b){b=(c+1)+". "+input[c];}else{b+="<br>"+(c+1)+". "+input[c];}}
17  insert(b,"info_orig");
18  }
19  function insert(text,cilove_id)
20  {
21  var elem = document.getElementById(cilove_id);
22  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;");}
23  else{elem.innerHTML=text;}
24  }
25  </script>
26  <title>Sort();</title>
27  </head>
28  <body onload="UnSorted(a);Sorted(a);">
29  <h5>Seřazený:</h5>
30  <span id="info"></span><br>
31  <h5>Originál:</h5>
32  <span id="info_orig"></span>
33  </body>
34</html>
<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;
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);
var pole1 = [...];
pole2 = pole1.slice(0);
TomasJ
Profil
Děkuji za radu.
Toto vlákno je staré, již dlouho do něj nikdo nepřispíval.

Informace a odkazy zde uváděné už nemusejí být aktuální. Nechcete-li řešit zde uvedenou konkrétní otázku, založte si vlastní vlákno, nepište do tohoto. Vložíte-li sem nyní příspěvek, upoutáte pozornost mnoha lidí a někteří z nich si jen kvůli vám přečtou i všechny předcházející příspěvky. Předpokládáte-li, že váš text skutečně bude hodnotný, stiskněte následující tlačítko:


Běda vám, jestli to bude blábol.

0