การเข้ารหัส: แผ่อาร์เรย์ใน Javascript
Flatten Array:การทำให้อาร์เรย์แบนหมายถึงการนำอาร์เรย์ที่อาจมีอาร์เรย์ที่ซ้อนกัน (เช่น อาร์เรย์ภายในอาร์เรย์) และแปลงเป็นอาร์เรย์มิติเดียว กล่าวอีกนัยหนึ่ง มันเกี่ยวข้องกับการลบอาร์เรย์ที่ซ้อนกันทั้งหมดและรวมองค์ประกอบไว้ในอาร์เรย์เดียว
เราจะหารือเกี่ยวกับวิธีแก้ปัญหาต่างๆ
โซลูชันที่ 1: การใช้การเรียกซ้ำ
รหัสกำหนดฟังก์ชันที่เรียกว่าFlattenArrayอาร์เรย์เป็นอาร์กิวเมนต์ เป้าหมายของฟังก์ชันคือการใช้อาร์เรย์ที่ซ้อนกันและส่งคืนเวอร์ชันที่แบนราบ ตัวอย่างเช่น ถ้าอินพุตเป็น[1, 2, [3, 4]]ฟังก์ชันควรส่ง[1, 2, 3, 4]คืน
ฟังก์ชันเริ่มต้นด้วยการสร้างอาร์เรย์ว่างที่เรียกว่า ซึ่งจะใช้เพื่อจัดเก็บอาร์เรย์อินพุตเวอร์ชันที่แบนราบ จากนั้นจะเข้าสู่forลูปที่จะวนซ้ำผ่านแต่ละองค์ประกอบในอาร์เรย์อินพุต
สำหรับแต่ละองค์ประกอบในอาร์เรย์อินพุต ฟังก์ชันจะตรวจสอบว่าองค์ประกอบนั้นเป็นอาร์เรย์หรือไม่โดยใช้Array.isArrayเมธอด ถ้าองค์ประกอบเป็นอาร์เรย์ ฟังก์ชันจะเรียกตัวเองซ้ำกับอาร์เรย์ที่ซ้อนกันเป็นอาร์กิวเมนต์ และใช้วิธีconcatรวมอาร์เรย์ที่ซ้อนกันแบบแบนราบกับflatArrayอาร์เรย์ที่สร้างขึ้นที่จุดเริ่มต้นของฟังก์ชัน
หากองค์ประกอบไม่ใช่อาร์เรย์ ฟังก์ชันจะผลักองค์ประกอบไปยังไฟล์flatArray.
หลังจากประมวลผลองค์ประกอบทั้งหมดในอาร์เรย์อินพุตแล้ว ฟังก์ชันจะส่งคืนค่าflatArray.
รหัสที่สมบูรณ์:
// Flatten Array
function FlattenArray(arr) {
var flatArray = []
for (let i = 0; i < arr.length; i++) {
if (Array.isArray(arr[i])) {
flatArray = flatArray.concat(FlattenArray(arr[i]))
} else {
flatArray.push(arr[i])
}
}
return flatArray
}
var arr = [1, 2, 3, 4, [5, 6, [7, 8]], [9]]
console.log(FlattenArray(arr))
แนวทางที่ 2: ใช้วิธีการลด
function flattenArray(arr) {
return arr.reduce(function(flatArray, current) {
if (Array.isArray(current)) {
return flatArray.concat(flattenArray(current));
} else {
return flatArray.concat(current);
}
}, []);
}
var arr = [1, 2, 3, 4, [5, 6, [7, 8]], [9]];
console.log(flattenArray(arr)); // [1, 2, 3, 4, 5, 6, 7, 8, 9]
วิธีการ นี้reduceใช้สองอาร์กิวเมนต์: ฟังก์ชันการเรียกกลับและค่าเริ่มต้นสำหรับตัวสะสม ในกรณีนี้ แอคคิวมูเลเตอร์คืออาร์เรย์ว่างที่จะใช้สร้างอาร์เรย์อินพุตเวอร์ชันที่แบนราบ
ฟังก์ชันการเรียกกลับใช้สองอาร์กิวเมนต์: ค่าปัจจุบันที่กำลังประมวลผล (ซึ่งจะเป็นแต่ละองค์ประกอบของอาร์เรย์อินพุต) และค่าปัจจุบันของตัวสะสม
ภายในฟังก์ชันการโทรกลับ เราจะตรวจสอบว่าค่าปัจจุบันเป็นอาร์เรย์หรือไม่โดยArray.isArrayใช้ หากเป็นอาร์เรย์ เราจะเรียกflattenArrayซ้ำเพื่อทำให้อาร์เรย์ที่ซ้อนกันแบนราบ จากนั้นเชื่อมอาร์เรย์ที่แบนราบกับตัวสะสมโดยใช้concatเมธอด
หากค่าปัจจุบันไม่ใช่อาร์เรย์ เราก็เชื่อมมันกับตัวสะสมโดยconcatใช้
สุดท้ายreduceเมธอดจะส่งคืนค่าสุดท้ายของตัวสะสม ซึ่งจะเป็นเวอร์ชันที่แบนราบของอาร์เรย์อินพุต
ด้วยรหัสนี้ คุณควรได้รับผลลัพธ์เหมือนเดิม[1, 2, 3, 4, 5, 6, 7, 8, 9]:
หากคุณสนใจที่จะเรียนรู้เพิ่มเติมเกี่ยวกับการเขียนโค้ดใน Javascript โปรดติดตามฉันเพื่อดูข้อมูลโค้ดและตัวอย่างเพิ่มเติม ฉันจะแบ่งปันข้อมูลอันมีค่าและเคล็ดลับเกี่ยวกับวิธีฝึกฝนภาษาให้เชี่ยวชาญและพัฒนาทักษะของคุณในฐานะนักพัฒนา ดังนั้น โปรดติดตามการอัปเดตเพิ่มเติม และมาเรียนรู้ร่วมกันต่อไป
ขอบคุณที่อ่าน ขอให้มีความสุขกับการเรียนรู้
Threading และ Multiprocessing ใน Python อธิบาย วิธีที่ง่ายที่สุดในการเข้าถึงฐานข้อมูลใน JAVA คำถามสัมภาษณ์ Java8 Stream ที่ถามบ่อยที่สุด — ตอนที่ 1 Apache Maven — สรุป




































![รายการที่เชื่อมโยงคืออะไร? [ส่วนที่ 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)