Autor Zpráva
Anonymní
Profil *
Dobrý den,

mám pole

pole1 = [1,2,3,4];

a druhé pole

pole2 = [2,3]

Jak lze získat prvky, které má pole pole1 a zároveň nemá pole2 (tedy prvky 1 a 4)?
nightfish
Profil
http://cz.php.net/manual/cs/function.array-diff.php
Anonymní
Profil *
V PHP to problém není, ja to ale potřebuji v Js:)
nightfish
Profil
Anonymní
jeee, sorry, sem si nevšiml kategorie
Anonymní
Profil *
A netušíš, jak by to šlo udělat v tom Js?
nightfish
Profil
zřejmě nezbude nic jiného než procházet první pole a pro každý prvek projet druhé pole jestli v něm je nebo ne...
Anonymní
Profil *
Tak nakonec to vyresim pomoci

for(i=0;i<arrayA.length;i++){
for(j=0;j<arrayB.length;j++){
if(arrayA[i]==arrayB[j])
{
arrayA.splice(i,1);
}
}
}

Diky.
zivan
Profil
To nebude fungovat tak, jak si predstavujes. Nepocitas s tim, ze kdyz odstarnis prvek z pole, tak se ti posunou indexy. Zkus si napr. otocit v poli A prvky "2" a "3". Odstrani ti to jen "3" :-(

Vis o tech polich, ze budou napr. setridena od nejmensiho do nejvetsiho prvku? Budou se v nich prvky opakovat?
zivan
Profil
Pokud nechces zachovat pole A, tak by to slo upravit na:

for(var i=0;i<arrayA.length;i++)
for(var j=0;j<arrayB.length;j++)
if(arrayA[i]==arrayB[j])
{
arrayA.splice(i--,1);
break;
}

Ale nebude to urcite nejrychlejsi. Pri kazdem odstraneni prvku se musi zbytek pole posunout.

Udelal bych to treba takhle:

var je = false;
for(var i=0;i<arrayA.length;i++)
{
for(var j=0;j<arrayB.length;j++)
if(arrayA[i]==arrayB[j])
{
je = true;
break;
}
if (!je)
rozdil[rozdil.length] = arrayA[i];
else
je = false;
}
Toto téma je uzamčeno. Odpověď nelze zaslat.