ใน es6 คุณสามารถใช้เมธอด from() ของอ็อบเจ็กต์ Array เพื่อแปลงอ็อบเจ็กต์ให้เป็นอาเรย์ได้ วิธีนี้สามารถแปลงอ็อบเจ็กต์ที่มีลักษณะคล้ายอาเรย์หรืออ็อบเจ็กต์แบบข้ามผ่านได้เป็นอาเรย์จริง )".

สภาพแวดล้อมการทำงานของบทช่วยสอนนี้: ระบบ Windows 7, ECMAScript เวอร์ชัน 6, คอมพิวเตอร์ Dell G3
ใน es6 คุณสามารถใช้เมธอด from() ของอ็อบเจ็กต์ Array เพื่อแปลงอ็อบเจ็กต์ให้เป็นอาร์เรย์ได้
วิธีการ Array.from() จะแปลงวัตถุที่มีลักษณะคล้ายอาร์เรย์หรือวัตถุที่ผ่านได้ให้เป็นอาร์เรย์จริง
แล้ววัตถุที่มีลักษณะคล้ายอาเรย์คืออะไร? ข้อกำหนดพื้นฐานที่สุดสำหรับสิ่งที่เรียกว่าวัตถุที่มีลักษณะคล้ายอาร์เรย์คือวัตถุที่มีแอตทริบิวต์ความยาว
1. แปลงวัตถุที่มีลักษณะคล้ายอาร์เรย์ให้เป็นอาร์เรย์จริง:
ให้ arrayLike = {
0: 'ทอม'
1: '65',
2: 'ชาย'
3: ['เจน','จอห์น','แมรี่'],
'ความยาว': 4
-
ให้ arr = Array.from (arrayLike)
console.log(arr) // ['tom','65','M',['jane','john','Mary']] แล้วถ้าแอตทริบิวต์ length ในโค้ดด้านบนถูกลบออกไปล่ะ? แบบฝึกหัดได้พิสูจน์แล้วว่าคำตอบจะเป็นอาร์เรย์ว่างที่มีความยาว 0
มาเปลี่ยนโค้ดอีกครั้งนั่นคือมีแอตทริบิวต์ length แต่ชื่อแอตทริบิวต์ของวัตถุไม่ใช่ประเภทตัวเลขอีกต่อไป แต่เป็นประเภทสตริงอื่น ๆ รหัสจะเป็นดังนี้:
ให้ arrayLike = {
'ชื่อ': 'ทอม'
'อายุ': '65',
'เพศ': 'ชาย'
'เพื่อน': ['เจน','จอห์น','แมรี่'],
ความยาว: 4
-
ให้ arr = Array.from (arrayLike)
console.log(arr) // [ undefinition, undefinition, undefinition, undefinition ] จะพบว่าผลลัพธ์เป็นอาร์เรย์ที่มีความยาว 4 และองค์ประกอบทั้งหมดไม่ได้กำหนดไว้
จะเห็นได้ว่า การแปลงวัตถุที่มีลักษณะคล้ายอาร์เรย์เป็น a อาร์เรย์จริงคุณต้องมีเงื่อนไขต่อไปนี้
ประเภทของวัตถุอาร์เรย์นี้ต้องมีแอตทริบิวต์ความยาวซึ่งใช้ในการระบุความยาวของอาร์เรย์ หากไม่มีแอตทริบิวต์ความยาว อาร์เรย์ที่แปลงแล้วจะเป็นอาร์เรย์ว่าง
ชื่อแอททริบิวต์ของอ็อบเจ็กต์อาเรย์ประเภทนี้ต้องเป็นตัวเลขหรือหมายเลขสตริง
ps: ชื่อแอททริบิวต์ของอ็อบเจ็กต์อาเรย์ประเภทนี้สามารถใส่เครื่องหมายคำพูดได้หรือไม่
2. แปลงข้อมูลของโครงสร้าง Set ให้เป็นอาเรย์จริง:
ให้ arr = [12,45,97,9797,564,134,45642] ให้ set = set ใหม่ (arr) console.log(Array.from(set)) // [ 12, 45, 97, 9797, 564, 134, 45642 ]
Array.from ยังสามารถยอมรับพารามิเตอร์ตัวที่สองซึ่งทำหน้าที่เหมือนกับวิธี map ของอาร์เรย์และถูกใช้ เพื่อแมป แต่ละองค์ประกอบจะถูกประมวลผล และวางค่าที่ประมวลผลลงในอาร์เรย์ที่ส่งคืน ดังนี้
ให้ arr = [12,45,97,9797,564,134,45642] ให้ set = set ใหม่ (arr) console.log(Array.from(set, item => item + 1)) // [ 13, 46, 98, 9798, 565, 135, 45643 ]
3. แปลงสตริงเป็นอาร์เรย์:
ให้ str = 'hello world !'; console.log(Array.from(str)) // ["h", "e", "l", "l", "o", " ", "w", "o", "r", " l", "d", "!"]
4. พารามิเตอร์ Array.from เป็นอาร์เรย์จริง:
console.log(Array.from([12,45,47,56,213,4654,154]))
เช่นนี้ , Array .from จะส่งคืนอาร์เรย์ใหม่ที่เหมือนกัน