Találkoztam ezzel a freeCodeCamp kihívással, és egy ideig elakadtam azon gondolkodva, hogyan találhatnék módot a megoldására. Már említették a Slice & Splice használatával történő megoldást. Abban az időben zavart voltam, mikor kell használni a Slice-t és mikor a Splice-t.
Itt megosztom, hogyan oldottam meg ezeket a módszereket.
A Slice és a Splice a tömbök manipulálására szolgál. Lássuk, hogyan csinálják.
Szelet:
A Szelet metódus 2 argumentumot igényel.
1. érv : Megadja, hogy honnan induljon a kiválasztás.
Például:
var arr1 = [1,5,8,9]; arr1.slice(1); // [5,8,9]
Az első indexből (5) az elemeket adja vissza.
2. érv : Megadja, hogy a végpont melyik szinten legyen. Ha ezt nem tette be a zárójelbe a szelet metódus meghívása közben, akkor az elemeket a kezdő indextől a tömb végéig adja vissza.
var arr1 = [1,5,8,9]; console.log(arr1.slice(1,3)); //[ 5, 8 ]
Ha hívás közben negatív számot tesz, a választás a tömb végéből lesz kiválasztva.
var arr1 = [1,5,8,9]; console.log(arr1.slice(-2)); //[ 8, 9 ]
Megjegyzés: A Slice mindig a tömbből adja vissza a kiválasztott elemeket.
A Slice nem változtatja meg a tömböt. A tömb sértetlen marad. Lásd az alábbi példát:
var arr1 = [1,5,8,9]; arr1.slice(2); console.log(arr1); // [ 1, 5, 8, 9 ]
Még ha néhány változtatást is végrehajtott a tömbben, az nem fogja befolyásolni. Visszaadja az eredeti tömböt, ahogy a kezdetnél van.
Toldás:
Ez több argumentumot is igénybe vehet.
Azt jelenti,
1. érv : Megadja, hogy melyik helyen kell új elemet vagy meglévő elemet hozzáadni / eltávolítani. Ha az érték negatív, akkor a pozíció a tömb végétől számítódik.
2. érv : A kiinduló helyzetből eltávolítandó elemek száma. Ha 0, akkor egyetlen elem sem kerül eltávolításra. Ha nem adja át, akkor minden elem törlődik a kiindulási helyzetből.
var arr1 = [1,5,8,9]; console.log(arr1.splice(1,2)); // [ 5, 8 ]
3. argumentum -> n-edik argumentum : A tömbhöz hozzáadni kívánt elemek értéke.
var arr1 = [1,5,8,9]; console.log(arr1.splice(1,2,'Hi','Medium')); // [5,8]
Gondolhatja, hogy hozzáadtuk a "Szia", a "Közepes" szót a tömbhöz, de itt nem jelenik meg ... Jobb?
Igen, megvigasztaltuk az arr1.splice-et (1,2, 'Szia', 'Közepes').
Jegyzet:
- A Splice az eltávolított elemeket csak a tömbből adja vissza.
- A Splice megváltoztatja az eredeti tömböt
var arr1 = [1,5,8,9]; arr1.splice(1,2,'Hi','Medium'); console.log(arr1); // [ 1, 'Hi', 'Medium', 9 ]
Spread Szintaxis:
Definíció : Lehetővé teszi az iterálható elemek, például egy tömb kifejezés vagy karakterlánc kibővítését olyan helyeken, ahol nulla vagy több argumentum (függvényhíváshoz) vagy elem (tömb literálhoz) várható, vagy egy objektum kifejezés kibővítését olyan helyeken, ahol nulla vagy több kulcs-érték párok (objektum literálok esetén) várhatók.
Legyen egy példa erre:
var arr1 = [1,3,6,7]; var arr2 = [5,arr1,8,9]; console.log(arr2); // [ 5, [ 1, 3, 6, 7 ], 8, 9 ]
Azt akarom, hogy ez egyetlen tömbben legyen, például [5, 1, 3, 6, 7, 8, 9].
Ezt a Spread Szintaxist használhatom ennek megoldására:
var arr1 = [1,3,6,7]; var arr2 = [5,...arr1,8,9]; console.log(arr2); //[ 5, 1, 3, 6, 7, 8, 9 ]
A Spread Syntax másik fő célja egy tömb másolása:
var arr = [1, 2, 3]; var arr2 = arr; arr2.push(4); console.log(arr2); // [ 1, 2, 3, 4 ] console.log(arr); // [ 1, 2, 3, 4 ]
Csak a arr2-hez adtam " 4 " -t . De megváltoztatta az arr-t is.
Ezt a Spread Syntax segítségével az alábbiak szerint oldhatjuk meg ...
var arr = [1, 2, 3]; var arr2 = [...arr]; // like arr.slice() arr2.push(4); console.log(arr2); // [ 1, 2, 3, 4 ] console.log(arr); // [ 1, 2, 3]
A Spread Syntaxról további információkat az MDN dokumentációjában talál.
Vessünk egy pillantást a kihívásra.
function frankenSplice(arr1, arr2, n) { // It's alive. It's alive! let array2Copy = [...arr2]; array2Copy.splice(n,0, ...arr1); //console.log(array2Copy); return array2Copy; } frankenSplice([1, 2, 3], [4, 5, 6], 1);
Ennek a kihívásnak a legfőbb feltétele, hogy „ne változtassa meg az arr1 / arr2-t a funkció végrehajtása után”.
Tehát létrehozott egy arr2 másolati tömböt, és a splice módszerrel adja hozzá az arr1-et az arr2 másolatához, amelyet array2Copy-nak neveznek el.
Végső következtetés:
-> Szelet módszer
- adja vissza a tömbből a kijelölt elemeket
- vegyen 2 érvet
- nem változtatja meg az eredeti tömböt
-> Splice módszer
- adja vissza a tömb eltávolított elemeit
- vegyen fel több érvet
- megváltoztatja az eredeti tömböt
Ez az első bemutatóm a kódolásról - köszönöm, hogy elolvastad! Visszajelzése segíteni fog a kódolási és írási készség fejlesztésében.
Boldog kódolás ...!
Lépj kapcsolatba velem a Twitteren keresztül