intersection関数の課題内容
_.intersection関数を自分で実装する課題。
https://lodash.com/docs/4.17.15#intersection
「課題内容」/「解説動画」/「解答例」を確認したい場合は、以下リンク先のページを参照。
https://js-drills.com/blog/intersection/
課題に取り組む前の状態
- 解答を見ずにできそうだと思った。
課題に取り組んだ後の状態
- 解答例はevery関数を使用して簡潔に書かれており、every関数を新たに知ることができてよかった。
intersection関数の実装コード(答えを見る前)
function intersection(...arrays) {
const copiedArray = [...arrays];
const newArray = [];
let value = [];
let flag = true;
for (let i = 0; i < copiedArray[0].length; i++) {
value = copiedArray[0][i];
console.log(`****value = ${value}`);
for (let j = 1; j < copiedArray.length; j++) {
console.log(`copiedArray = ${copiedArray[j]}`);
if (copiedArray[j].includes(value)) {
console.log(`yes! ${value}`);
flag = true;
} else {
console.log(`NOOOO! ${value}`);
flag = false;
break;
}
}
if (flag) {
newArray.push(value);
}
flag = true;
}
return newArray;
}
let result = intersection([2, 1], [2, 3]);
console.log(result);
// => [2]
result = intersection([2, 1], [2, 3], [2, 4]);
console.log(result);
// => [2]
result = intersection([2, 1], [1, 2, 3], [2, 4]);
console.log(result);
// => [2]
## intersection関数の実装コード(答えを見た後)
function intersection(...arrays) {
const newArray = [];
const headArray = arrays.shift();
for (let i = 0; i < headArray.length; i++){
const value = headArray[i];
if (arrays.every((array) => array.includes(value))) {
newArray.push(value);
}
}
return newArray;
}