v2.5.2
Giriş yap

JavaScript dilinde birden fazla Array'i istenilen şekilde karıştırmak.

mertt
413 defa görüntülendi ve 1 kişi tarafından değerlendirildi

Selamlar,

Amacım birden fazla arrayı birbiriyle karıştırarak istediğim şekilde kombinlemek. Örnek vermek gerekirsek elimizde 2 adet array olsun.

    let firstArray = ["40", "41", "42"];
    let secondArray = ["Red", "Black"];
JavaScript

Amacım bu iki arrayı aşağıda ki gibi olacak şekilde yeni bir array haline getirmek.

    let sonuc = [ ["40", "Red"], ["40", "Black"], ["41", "Red"], ["41", "Black"], ["42", "Red"], ["42", "Black"] ];
JavaScript

firstArray ve secondArray şeklinde 2 array belirttim array sayısı ve içlerinde ki eleman sayısı değişebilir. İstediğim şekilde nasıl arrayleri kombinlerim?

Cevap yaz
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Cevaplar (3)
codepacks
828 gün önce

JavaScript'te birden fazla diziyi karıştırmak için concat() metodunu veya spread operator kullanabilirsiniz.
concat() metodu iki veya daha fazla diziyi birleştirir ve yeni bir dizi oluşturur.
spread operator (...) dizileri ayrıştırmak için kullanılır ve dizileri birleştirirken daha esnek bir yol sağlar.

Örneğin, aşağıdaki örnekte iki dizi ("dizi1" ve "dizi2") kullanılır ve concat() metodu ile birleştirilir.

const dizi1 = [1, 2, 3];
const dizi2 = [4, 5, 6];
const karisikDizi = dizi1.concat(dizi2);
console.log(karisikDizi); // [1, 2, 3, 4, 5, 6] 

Aynı işlemi spread operator ile yapmak için :

const dizi1 = [1, 2, 3];
const dizi2 = [4, 5, 6];
const karisikDizi = [...dizi1, ...dizi2];
console.log(karisikDizi); // [1, 2, 3, 4, 5, 6] 

Birden fazla diziyi karıştırmak isterseniz, dizileri rastgele sıralamak için sort() metodunu kullanabilirsiniz.
Ancak dizileri sıralamak için kullanılır o yüzden karıştırma olarak kullanamayız.
Onun yerine 'Fisher-Yates Shuffle Algorithm' yada benzeri bir algoritma kullanmanız önerilir.

function karisikDizi(arr) {
    for (let i = arr.length - 1; i > 0; i--) {
        const j = Math.floor(Math.random() * (i + 1));
        [arr[i], arr[j]] = [arr[j], arr[i]];
    }
    return arr;
} 

Bu fonksiyon, gönderilen diziyi rastgele sıralar ve yeni bir dizi oluşturmaz.

tayfunerbilen
828 gün önce

ben de farkli bir ornek vereyim:

console.log(
    firstArray.reduce((acc, curr) => [...acc, ...secondArray.reduce((a, c) => [...a, [curr, c]] ,[])] ,[])
)
JavaScript
ebykdrms
828 gün önce
const sonuc = firstArray.map(x=>secondArray.map(y=>[x, y])).flat(1);
JavaScript

veya

const sonuc = [];
firstArray.map(x=>{
    sonuc.push(...secondArray.map(y=>[x,y]));
});
JavaScript

veya

const sonuc = [];
for(let i=0; i < firstArray.length; i++) {
    for(let k=0; k < secondArray.length; k++) {
        sonuc.push([firstArray[i], secondArray[k]);
    }
}
JavaScript

Bu işlemi birkaç farklı yerde kullanacaksan fonksiyonlaştırmanı öneririm:

const matchSetsOneToOne = (set1, set2) => set1.map(x=>set2.map(y=>[x, y])).flat(1);

// Kullanırken:
const sonuc = matchSetsOneToOne(firstArray, secondArray);
JavaScript