สมมติว่าเรามีสองอาร์เรย์ ตัวอย่างเช่นพิจารณาสองอันนี้:
const array1 = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']; const array2 = [1, 0, 0, 1, 0, 0, 1, 0];
ทั้งสองอาร์เรย์จะมีความยาวเท่ากันเสมอ เราต้องเขียนฟังก์ชันที่เมื่อได้รับองค์ประกอบจากอาร์เรย์ที่สอง คืนค่าซับอาร์เรย์จากอาร์เรย์แรกขององค์ประกอบทั้งหมดที่ดัชนีตรงกับดัชนีขององค์ประกอบที่เรารับเป็นอาร์กิวเมนต์ในอาร์เรย์ที่สอง
ตัวอย่าง: findSubArray(0) ควรคืน:
['b', 'c', 'e', 'f', 'h']
เพราะนี่คือองค์ประกอบในอาร์เรย์แรกที่ดัชนี 1, 2, 4, 5, 7 ซึ่งในอาร์เรย์ที่สองมี 0 อยู่
ตอนนี้มาเขียนโค้ดสำหรับฟังก์ชันนี้กัน:
ตัวอย่างโค้ด
const array1 = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'];
const array2 = [1, 0, 0, 1, 0, 0, 1, 0];
const findSubArray = (first, second, el) => {
if (first.length !== second.length) {
return false;
}
return second.reduce((acc, val, ind) => {
if (val === el) {
acc.push(first[ind]);
}
return acc;
}, []);
};
console.log(findSubArray(array1, array2, 0));
console.log(findSubArray(array1, array2, 1));
ผลลัพธ์
ผลลัพธ์ในคอนโซลจะเป็นดังนี้:
['b', 'c', 'e', 'f', 'h'] ['a', 'd', 'g']