Jump to content
php.lv forumi
  • 0

JScript masīva izveidošana kuru var papildīnāt


Sasa

Question

Kā izveidot masīvu kurš izskatītos kaut kā šādi: masīvs[lauks1, lauks2, lauks3 ... lauks18] tādu laiku būs ~ 18. ?

Un tad iespēja šāda:

masīvs.push["lauka1 vērtība", "lauka2 vērtība", "lauka3 vērtība", ... "lauka18 vērtība"] <- tā lai atmiņā glabātos visa vajadzīgā informācija vienā masīvā. ?

 

tālāk būtu

foreach(masīvarinda rinda in masīvs)

{

 

tiek zīmēta HTML tabula ar vērtībām kuras ir masīvā ...

 

}

Link to comment
Share on other sites

14 answers to this question

Recommended Posts

  • 0

Ja tev to lauku id ir numurēti (lauks_0, lauks_1, ... lauks_17) tad nevajag nosaukumus glabāt nekur:

var lauku_vertibas = [];
for (var i=0; i<18; i++)
{
   lauku_vertibas.push(document.getElementById("lauks_" + i).value);
}

Ja lauku id nav numurēti, tad nāksies glabāt to id vērtības atsevišķā masīvā. Nekāda raķešzinātne nav:

var ids = ["lauka_1_id", "lauka_2_id", ...];

var lauku_vertibas = [];
for (var i=0; i<ids.length; i++)
{
   lauku_vertibas.push(document.getElementById(ids[i]).value);
}

 

Tajā rakstā viss ir uzrakstīts par to sliktumu - izlasi uzmanīgāk.

JS'ā asociatīvo masīvu vienmēr ir bijis jātaisa ar Object:

var obj = {}; // vai new Object();
obj["a"] = "b";

Link to comment
Share on other sites

  • 0

es tagad nesaprotu kas man sanāks.

 

Rezultātā es gribētu panākt ka man ir viens masīvs kurā ir rindas un katrā rindā zem attiecīgā indexa atrodās vērtībā.

 

apmēram tā:

masīvs[nulltā rinda][nulltās rindas nulltais elements] = "kaut kāda vērtība"
masīvs[nulltā rinda][nulltās rindas pirmais elements] = "kaut kāda vērtība"
masīvs[nulltā rinda][nulltās rindas otrais elements] = "kaut kāda vērtība"
...
...
...
masīvs[n-tā rinda][n-tās rindas nulltais elements] = "kaut kāda vērtība"
.
.
.
masīvs[n-tā rinda][n-tās rindas desmitais elements] = "kaut kāda vērtība"

 

tad man ērti būtu caur for ciklu paskatīties kāds ir masīva garums un tad no katras masīva rindas izdabūt konkrēta elementa vērtību. bet kā kaut ko tādu uzglabātu atmiņā lai var visa darba gaitā papildināt un darbu pabeidzot izvadīt smukā HTML tabulā visu kas ir salikt šādā masīvā.

Link to comment
Share on other sites

  • 0

Un kur problēma? Nekādas atšķirības no PHP, C# vai jebkuras citas valodas, kuru tu zini:

var masivs = [
  ["0::0", "0::1", "0::2", ..., "0::N"],
  ["1::0", "1::1", "1::2", ..., "1::N"],
  ...
  ["M::0", "M::1", "M::2", ..., "M::N"],
];

Link to comment
Share on other sites

  • 0

izveidoju masīvu kurā vēl ir masīvs:

http://paste.php.lv/cdaa89af6d5d7b77224a00eb9d27434d?lang=javascript

 

un ir tā ārpus funkcijas definēju masīvu kurā tad man arī viss glabāsies.

details = new Array (); 

funkcijā ir for cikls kas iet cauri produkta detaļām pie katras jaunas detaļas man iekš masīva izveidojas vēl viens masīvs

details[i] = new Array ();

 

ja ir viens pats produkts viss nostrādā, bet iekš ši paša produkta var ielikt vēl kādu produktu, kurš būs kā ieliktais produkts

 

cnt = Product.SubProductsCount;
for( i=0; i<cnt; i++ )
{
 ProductSpecification( Product.SubProduct(i) );
}

 

ProduktSpecification arī ir tā funkcijas kas aizpilda details masīvu. bet tagad ir problēma es nesaprotu kas notiek, ja man ir ielikts produkts viņš kaut kā nesaprotami aizpilda to masīvu.

 

Principā es gribētu kaut kā šādi ir man masīvs 2d kuru es aizpildu apmēram kā ir kodā, tad ar vienkāršu for ciklu izeju cauri šim 2d masīvam un uzģenerētu HTML tabulu.

 

Problēma ir tajā ja ir ielikt produkts funkcijai būtu jāpapildina jau esošais details masīvs, nevis jāsačakarē viss.

Link to comment
Share on other sites

  • 0
viņš kaut kā nesaprotami aizpilda to masīvu.

Un kā tas "nesaprotami" izskatās vai izpaužās?

 

Masīva izveidošana izskatās daudzmaz korekti. Tik dīvaini, ka tu aizpildi i-to indeksu, jo atkarībā no if nosacījumiem sanāk, ka masīvā tev var būt tukšas rindas (tiem kuriem, piemēram, Detail.IsComplexEdging ir true). Bet ja nu tā vajag, tad vajag. Es gan tā vietā būtu lietojis push metodi.

Link to comment
Share on other sites

  • 0

kā uz mana masīvu varianta izmantot push (ja ir viendimensiju masīvs, tad daudz maz skaidrs kā izmantot push)?,

Nekorektums ir tajā, ja man ir produkts + vēl viens ieliktais produkts tad man nepapildinās details masīvs, bet gan izveidojas jauns un tā tabula kurai būtu jāizveidojas vienu reizi tiek nodublēta un rezūltātā ir divas tabulas.

 

es jau pašā sākumā vēlētos ar push papildināt masīvu nevis katru reizi iekš for cikla i-tajai rindai veidot jaunu masīvu.

Link to comment
Share on other sites

  • 0

Tieši tāpat kā php:

$arr = array();
for (...)
{
  $arr2 = array();
  $arr2[] = "...";
  $arr2[] = "...";
  $arr[] = $arr2;
}

tāpat dari arī JS (vai jebkurā citā programmēšanas valodā):

var arr = [];
for (...)
{
  var arr2 = [];
  arr2.push("...");
  arr2.push("...");

  // vai arī abas iepriekšējās rindas var uzrakstīt vienā:
  // arr2.push("...", "...");

  arr.push(arr2);
}

 

Nesaprotu par to tavu dublikātu veidošanu. Ja negribi dublikātus, tad pirms tam pārbaudi ir jau vai nav tur tāds iekšā (tam gan labāk izmantot asociatīvo masīvu, nevis lineāri skriet visiem ierakstiem cauri). Un ja ir, tad neliec vēl vienu rindu. Kur problēma?

Link to comment
Share on other sites

  • 0

Problema tajā,ja ir ielikt produkts tad izsaucas tā pati funkcija, kas izpildās normālā gadijumā, ja nav nekāda ielikta produkta. Dublikāts nav detaļas dublikāts, bet gan vaidojas klons tabulai, kam nevajadzētu notikties, jo tā jau es mēģinu gan 'root' produktu, gan 'subpproduct' produktu sadabūt vienā tabula, defoultajā variantā priekš katra veidojās sava tabula, ar kurām tālāk nekā lāga nevarēja iesākt.

Rezultātā man ir divas HTML tabulas, jo

htmlTableForDetails(details); 

ģenerē tabulu no tā details masīva.

 

paldies par koda paraugiem ... noderēja.

 

edit:

 

izdomāju sataisīšu pārbaudi, kas pārbauda vai ir ieliktie produkti vai nav :)

Edited by Sasa
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...