Javascript wypisywanie ID powtarzalnych wartosci

0

Kod ma za zadanie wypisywać powtarzalne ID z tablicy XX. Wypisuje je, ale nie chce ich dodać do tablicy nazwanej SS. Może mi ktoś z tym pomoc/ wytłumaczyć gdzie mam błąd?

<script>
var XX = [];
	XX[0] = ['z','1','x','y',1];
	XX[1] = ['z','2','x','y',2];
	XX[2] = ['z','1','x','y',1];
	XX[3] = ['z','2','x','y',2];
	XX[4] = ['z','3','x','y',3];
var SS = [];
	for(i=0;i<XX.length;i++){
		for(j=0;j<XX.length;j++){
			if((XX[i][4]==XX[i+j][4])&&(i!=i+j)){
                                //Zmienna d to powtarzające sie ID
				var d = XX[i][4];
                                //dodanie zmiennej d do tablicy SS(które nie działa nwm czemu i proszę o pomoc aby zaczęło działać)
				SS.push(d)
                                //wypisanie zmiennej d (które działa)
				document.write(d)
			}
		}
	}
	for(j=0;j<SS.length;j++){
		document.write(SS[j])
	}


</script> 
0

XX[i+j] - indeksy powyżej 4

0
Maciej Cąderek napisał(a):

XX[i+j] - indeksy powyżej 4

Nie rozumiem :/ dlaczego w takim razie document.write(d) wypisuje mi najpierw 1 a potem 2?
A SS.push(d) nie dodaje tych (w tym przypdaku 2- 1 oraz 2) liczb do tablicy SS?

0

Nie deklaruj w ten sposób zmiennej wewnątrz pętli. Javascript ma scoping per funkcja, a nie blokowy.
Poza tym patrzyłeś wgl. do konsoli?

Uncaught TypeError: Cannot read property '4' of undefined(…)
0

Wyrzuca Ci błąd ponieważ dodając te dwie zmienne w 3 kroku pętli masz np i=3 i j=2 (a ich suma to więcej niż 4 i nie masz takiego indeksu tablicy. Zresztą mogłeś zrobić to delikatnie inaczej (bardziej uniwersalnie gdybyś np nie wiedział ile jest elementów w poszczególnych wierszach), poniżej przykład (pomijam powyższy komentarz o deklarowaniu zmiennych - zresztą słuszny)

            
var XX = [];
    XX[0] = ['z','1','x','y',1];
    XX[1] = ['z','2','x','y',2];
    XX[2] = ['z','1','x','y',1];
    XX[3] = ['z','2','x','y',2];
    XX[4] = ['z','3','x','y',3];
var SS = [];
    for(i=0;i<XX.length;i++){
        // tutaj trzeba sprawdzić ile jest elementów w konkretnej "podtablicy"
        for(j=0;j<XX[i].length-1;j++){ 
            if(XX[i][j]==XX[i][XX[i].length-1]){    //ostatni element z drugiej klamerce
                                
                var d = XX[i][XX[i].length-1];    // ostatni element gdybyś nie wiedział ile jest elementów
                                
                SS.push(d);
                               
                document.write(d+"<br>");
            }
        }
    }
    for(j=0;j<SS.length;j++){
        document.write(SS[j]);
    }
1

Tu masz (chyba) potrzebny kod - dwie pętle są niepotrzebne:

var inputArray = [
    ['z','1','x','y',1],
    ['z','2','x','y',2],
    ['z','1','x','y',1],
    ['z','2','x','y',2],
    ['z','3','x','y',3]
];

function findDuplicates(array, idPosition) {
    var result = [], unique = [], i, current;

    for (i = 0; i < array.length; i++) {
        current = array[i][idPosition];
        if (unique.indexOf(current) !== -1) {
            result.push(current);
        } else {
            unique.push(current);
        }
    }
    return result;
}

console.log(findDuplicates(inputArray, 4));

1 użytkowników online, w tym zalogowanych: 0, gości: 1