Problem z tablicą JavaScript. Pierwszy element przechodzi na ostatnią pozycję

0

Pytanie

Mam funkcję, która otrzymuje tablicę i zwraca tablicę o mocy 2 każdego elementu tablicy. To jest kod źródłowy

const firstArr = [1, 2, 3, 7, 4, 9];

function arrayPow(arr) {
    const outputArray = [];
    arr.forEach(el => {
        console.log(el);
        outputArray.splice(-1, 0, el**2);
    })
    return outputArray;
}

console.log(arrayPow(firstArr));

Dostałem to jako wyjścia:

script.js:8 1
script.js:8 2
script.js:8 3
script.js:8 7
script.js:8 4
script.js:8 9
script.js:14 (6) [4, 9, 49, 16, 81, 1]

Wykres elementów poprawiono w cyklu. Ale teraz w tablicy jest pierwszy element, w jakiś rezonans, pozostający w końcu. Próbowałem usunąć "1" z firstArr, a następnie "4" przejść na ostatnią pozycję. Dlaczego?

arrays javascript
2021-11-24 04:49:39
3

Najlepsza odpowiedź

2

Dodawanie -1 w połączenie oznacza, że wkładasz przed ostatnim elementem tablicy. Gdy tablica jest pusta, on po prostu jest dodawana jako jedyny element.

Po włożeniu przed ostatnim elementem tablicy, więc każda kolejna iteracja będzie dodać element jako drugiego ostatniego elementu.

Ja bym po prostu użył magii ES6:

const firstArr = [1, 2, 3, 7, 4, 9];
const arrayPow = (arr) => arr.map(i => i**2)
console.log(arrayPow(firstArr))

2021-11-24 05:14:02
0

Użyj tego kodu, to będzie działać jak marzenie!

const firstArr = [1, 2, 3, 7, 4, 9];

function arrayPow(arr) {
    return arr.map(v => v ** 2);
}

console.log(arrayPow(firstArr));
2021-11-24 05:01:15

Boże miłosierny, to taki ciężki, skomplikowany sposób, aby to zrobić. Można dosłownie dostać funkcję budowy w kwadrat, który pozwala RÓWNIEŻ określić inną moc, aby zwiększyć, jeśli chcesz w jednym wierszu: const arrayPow = (arr, pow = 2) => arr.map(el => el**pow);
Jayce444

Ten oryginalny odpowiedzi był podobny do zabicia muchy z dubeltówki.
Steve
0

Jeśli dobrze rozumiem twoje pytanie, chcesz zwiększyć każdy element tablicy do potęgi 2? Jeśli tak, to nie jestem pewien, dlaczego podłączasz mikser do tablicy. Można spróbować następujący:

function arrayPow(arr) {
    const outputArray = [];
    arr.forEach(el => {
        outputArray.push(el**2);
    })
    return outputArray;
}

const test = [1,2,3]
console.log(arrayPow(test))

2021-11-24 05:04:18

W innych językach

Ta strona jest w innych językach

Русский
..................................................................................................................
Italiano
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................