Dizi JavaScript sorunu. İlk öğe son konuma gider

0

Soru

Diziyi alan ve her dizi öğesinin gücü 2 olan diziyi döndüren işlevim var. Bu kaynak kodudur

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));

Bunu çıktı olarak aldım:

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]

Elmentlerin Scedule'si döngüde düzeltildi. Ama şimdi dizide, ilk eleman var, bazı kaynaklarda, sonunda kal. İlk önce "1" i silmeye çalıştımtarr, sonra "4" son konuma gider. Niçin?

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

En iyi cevabı

2

Ek yerinize -1 koymak, dizideki son öğeden önce eklediğiniz anlamına gelir. Dizi boş olduğunda, yalnızca tek öğe olarak eklenir.

Ardından, dizinin son öğesinden önce eklersiniz, bu nedenle sonraki her yineleme öğeyi ikinci son öğe olarak ekler.

Sadece ES6 büyüsünü kullanırdım:

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

Bu kodu kullanın, çekicilik gibi çalışacak!

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

Yüce tanrım, bu çok ağır ve kafa karıştırıcı bir yöntem. Kelimenin tam anlamıyla, tek bir satırda isterseniz yükseltmek için farklı bir güç belirtmenizi sağlayan bir kareleme işlevi elde edebilirsiniz: const arrayPow = (arr, pow = 2) => arr.map(el => el**pow);
Jayce444

Bu orijinal cevap av tüfeğiyle bir sineği öldürmek gibiydi.
Steve
0

Sorunuzu doğru anladıysam, dizideki her öğeyi 2'nin gücüyle yükseltmek ister misiniz? Eğer öyleyse, diziyi neden birleştirdiğinizden emin değilim. Aşağıdakileri deneyebilirsiniz:

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

Diğer dillerde

Bu sayfa diğer dillerde

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