🍍

配列の重複問題2

に公開

2つの数値が入った配列で、重複した数値を取り出す

const list1 = [2, 43, 48, 62, 64, 28, 3];
const list2 = [1, 28, 42, 70, 2, 10, 62, 31, 4, 14];

step1. 配列をループして、展開する(どちらか一つ)
step2. 関数を定義する
step3. set1を作成する
step4. 関数の引数を2つにする
step5 重複しているものを格納する変数を用意する
step6. arr2をループして、set1にそれが存在する場合は、重複する変数に格納する
step7. 重複する変数を返す

//step1
for(const list of list1){
    console.log(list);
}
//step2
const duplicateNumber = arr => {
    //step1
    for(const list of arr){
        console.log(list);
    }
}

duplicateNumber(list1);
console.log("---------");
duplicateNumber(list2);
//step2 -> step4
const duplicateNumber = (arr1, arr2) => {
    //step3
    const set1 = new Set(arr1);
    //step1
    for(const list of arr){
        console.log(list);
    }
}
//step2 -> step4
const duplicateNumber = (arr1, arr2) => {
    //step3
    const set1 = new Set(arr1);
    //step5
    const dup = new Set();
    //step1
    for(const list of arr){
        console.log(list);
    }
}
//step2 -> step4
const duplicateNumber = (arr1, arr2) => {
    //step3
    const set1 = new Set(arr1);
    //step5
    const dup = new Set();
    //step1 -> step6
    for(const list of arr2){
        if(set1.has(list)){
            dup.add(list);
        }
    }
}
//step2 -> step4
const duplicateNumber = (arr1, arr2) => {
    //step3
    const set1 = new Set(arr1);
    //step5
    const dup = new Set();
    //step1 -> step6
    for(const list of arr2){
        if(set1.has(list)){
            dup.add(list);
        }
    }
    //step7
    return Array.from(dup);
}

console.log(duplicateNumber(list1, list2));

参照

https://bookplus.nikkei.com/atcl/catalog/22/07/19/00285/

Discussion