Šiame pavyzdyje išmoksite rašyti „JavaScript“ programą, kuri atliks dviejų masyvų sankirtą.
Norėdami suprasti šį pavyzdį, turite žinoti šias „JavaScript“ programavimo temas:
- „Javascript“ masyvo filtras ()
- „JavaScript“ masyvo stumdymas ()
- „JavaScript“ rinkinys ir „WeakSet“
1 pavyzdys: Atlikite sankirtą naudodami rinkinį
// program to perform intersection between two arrays using Set // intersection contains the elements of array1 that are also in array2 function performIntersection(arr1, arr2) ( // converting into Set const setA = new Set(arr1); const setB = new Set(arr2); let intersectionResult = (); for (let i of setB) ( if (setA.has(i)) ( intersectionResult.push(i); ) ) return intersectionResult; ) const array1 = (1, 2, 3, 5, 9); const array2 = (1, 3, 5, 8); const result = performIntersection(array1, array2); console.log(result);
Rezultatas
(1, 3, 5)
Minėtoje programoje sankirta atliekama tarp array1
ir array2
.
- Masyvo elementai paverčiami
Set
elementais naudojantnew Set()
konstruktorių. for… of
Kilpa naudojama, kad iš eilės nei antrasisSet
elementai.has()
Metodas naudojamas siekiant patikrinti, ar elementas yra pirmasSet
.- Jei elementas yra pirmajame
Set
, šis elementas pridedamas prie intersectionResult masyvo naudojantpush()
metodą.
2 pavyzdys: Atlikite sankirtą naudodami filtro () metodą
// program to perform intersection between two arrays function performIntersection(arr1, arr2) ( const intersectionResult = arr1.filter(x => arr2.indexOf(x) !== -1); return intersectionResult; ) const array1 = (1, 2, 3, 5, 9); const array2 = (1, 3, 5, 8); const result = performIntersection(array1, array2); console.log(result);
Rezultatas
(1, 3, 5)
Pirmiau minėtoje programoje, naudojant filter()
metodą, atliekama sankryža tarp dviejų masyvų . Filtro metodas pakartoja masyvą ir grąžina masyvo elementus, kurie perduoda nurodytą sąlygą.
- Kiekvienas pirmojo masyvo elementas palyginamas su antruoju masyvu, naudojant
indexOf()
metodą. - Į
arr2.indexOf(x)
metodas paieškų arr2 ir grąžina pirmosios atsiradimo arr1 poziciją. Jei vertės rasti nepavyksta, ji grąžina -1 . - Visi elementai, esantys abiejose masyvuose, grąžinami
filter()
metodu.
Pastaba: Taip pat galite naudoti includes()
metodą, kad patikrintumėte, ar masyvo elementai yra abiejuose masyvuose.
const intersectionResult = arr1.filter(x => arr2.includes(x))