สอบถามวิธีเขียน script กำหนดตัวเเปรที่รับค่ามาจาก api หน่อยครับ
ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา สอบถามวิธีเขียน script กำหนดตัวเเปรที่รับค่ามาจาก api หน่อยครับ
สอบถามวิธีเขียน script กำหนดตัวเเปรที่รับค่ามาจาก api หน่อยครับ
ผมมีตัว array ตามตัวอย่างข้อมูลด้านล่างนี้ โดยต้องการจะกำหนดตัวเเปรให้กับ ค่าต่างๆ ที่มีใน array โดยต้องการจะอ้างอิงไปยังตัว array model:{} ครับ ซึ่งผมไม่ทราบว่าต้องเขียนอย่างไรเพื่อให้มันกำหนดตัวเเปร เพื่อเก็บค่าได้ถูกต้อง รบกวนพี่ๆเเนะนำ เเก้ไขให้หนอ่ยครับ
ID: "58",
idmem: "8",
idbrand: "64",
model: {
id: 11299,
year: 2018,
idbrand: 64
}
ID: "58",
idmem: "8",
idbrand: "64",
model: {
id: 11299,
year: 2018,
idbrand: 64
}
1 2 3 4 | function byg_replace(id){ var md = model[id]; $( "#byg_price" ).html( "" ); } |

คำแนะนำ และการใช้งาน
สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก
- ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
ความคิดเห็นที่
1
คำถาม กับข้อมูลไม่ชัดเจน ถ้าเป็น ข้อมูล array ของ js จะเป็น ประมาณ
1 | a = [a,b,c]; |
ถ้าเป็น array object ของ js จะเป็นประมาณ
1 2 3 4 | var b = [ {id: '1' ,name: 'A' }, {id: '3' ,name: 'B' } ] |
หรือ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | var c = [ { id: '1' , name: 'A' , address:{ street: 'street1' } }, { id: '3' , name: 'B' , address:{ street: 'street2' } } ] |
นั่นคือ
1 2 3 4 5 6 7 | c[0] = { id: '1' , name: 'A' , address:{ street: 'street1' } } |
เราไม่สามารถอ้างอิงข้อมูล ของ c[0] โดยส่งผ่าน id ที่เป็นตัวเชื่อมความสัมพันธ์ได้ นอกเสียจาก id จะเป็นค่า key
ของ array เช่น
1 2 3 4 5 6 7 | c[1] = { id: '1' , name: 'A' , address:{ street: 'street1' } } |
ถ้าข้างต้นเราสามารถอ้างอิงค่าเป็น c[1].address ในฟังก์ชั่นได้
แต่ถ้าไม่เป็นแบบข้างต้น ที่สามารถทำได้คือใช้คำสั่งค้นหา ค่าที่เป็น primary ไม่ซ้ำกัน แล้วเทียบค่า หากตรงกันก็คินค่าข้อมูลนั้นออกมา
แต่ถ้าไม่เป็นแบบข้างต้น ที่สามารถทำได้คือใช้คำสั่งค้นหา ค่าที่เป็น primary ไม่ซ้ำกัน แล้วเทียบค่า หากตรงกันก็คินค่าข้อมูลนั้นออกมา
หรือใช้งานค่านั้น และถ้าทำเป็นฟังก์ชั่น เราก็ส่ง array ข้อมูลนั้นเข้าไปด้วย
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | var c = [ { id: '1' , name: 'A' , address:{ street: 'street1' } }, { id: '3' , name: 'B' , address:{ street: 'street2' } } ]; function findValue(data,val){ data.find( function (obj){ if (obj.id == val){ console.log(obj); //return obj; } }); } findValue(c,3); |
เวลาอ้างอิง object ใช้เป็น . (จุด) ถ้าจะแสดงข้อ street ของ id = 3 ก็จะประมาณนี้
1 2 3 4 5 6 7 8 9 | function findValue(data,val){ data.find( function (obj){ if (obj.id == val){ console.log(obj.address.street); //return obj; } }); } findValue(c,3); |
>>> อัพเดท >>> 10-09-2020
------------------------------------------
แก้ไข
js ตัวแปร สามารถเรียกใช้งานใน ฟังก์ชั่นได้ สับสนกับ php
เราไม่ต้องส่งตัวแปร data เข้าไปก็ได้ สามารถเรียกใช้งานได้เลย
1 2 3 4 5 6 7 8 9 | function findValue(val){ c.find( function (obj){ if (obj.id == val){ console.log(obj.address.street); //return obj; } }); } findValue(3); |

ความคิดเห็นที่
2
ตามข้อมูลของผม ตัว id จะเป็นค่า key ของ array ครับ โดย id จะมีการส่งมาจากตัว ปุ่ม ที่ผมได้มีการระบุ id ของค่า นั้นๆไว้ครับ

ความคิดเห็นที่
3
key ของ array ใน javascript จะเป็นตัวเลข หากไม่กำหนด จะเริ่มต้นที่ 0 เสมอ
เราสามารถส่ง id ที่เป็น key ของ array เพื่อเลือก เฉพาะข้อมูลในฟังก์ชั่นได้
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | var c = [ { id: '1' , name: 'A' , address:{ street: 'street1' } }, { id: '2' , name: 'B' , address:{ street: 'street2' } } ]; function findValue(id){ var street = c[id-1].address.street; // จะได้ค่าเป็น street1 } findValue(1); |
ต้องมั่นใจว่าเราเข้าใจ key ของ array และ key ของ object ใน javascript จะไม่เหมือนกัน

ความคิดเห็นที่
4
สอบถามเพิ่มเติมครับ ผมน่าจะใช้ตัว function ด้านล่างในการดึงข้อมูล เเต่ต้องเขียนอย่างไรเพื่อให้นำข้อมูล ค่าใน array เช่น นำค่า street : street1 ไปใส่ในตัวเเปร
$(
"#byg_price"
).html(
""
); นี้ครับ
1 2 3 4 5 6 7 8 9 | function findValue(val){ c.find( function (obj){ if (obj.id == val){ console.log(obj.address.street); //return obj; } }); } findValue(3); |

ความคิดเห็นที่
5
ถ้าใช้เป็นข้อมูล ก็อ้างอิง object แต่ละ key
ถ้าเป็น array กำหนด key ใน []
แต่ถ้าเป็น object กำหนด key ต่อกันด้วยจุด
ถ้ามีทั้ง array และ object ก็ใช้ทั้ง [] และ . เช่น c[1].address.street
แนวทางใช้งาน ก็เอาค่าข้อมูลไปแทรกในคำสั่ง html() ได้เลย หรือถ้าจะแทรก
เฉพาะข้อความ ใช้เป็น text() แทน html() ได้ เช่น
1 | $( "#byg_price" ).text(obj.address.street); |
ตัวอย่าง
1 2 3 4 5 6 7 8 | function findValue(val){ c.find( function (obj){ if (obj.id == val){ $( "#byg_price" ).html(obj.address.street); } }); } findValue(3); |
คำสั่งข้างต้นเราใช้ฟังก์ชั่น find() ซึ่งเป็นฟังก์ชั่นของ array ตัวแปร c ก็คือตัวแปร ที่สามารถเรียก
ใช้ฟังก์ชั่น find() ได้
หรือถ้าอยากประยุกต์ให้สามารถใช้ฟังก์ชั่นนี้ แทรก ใน element อะไรก็ได้ ก็ลองปรับเป็น
1 2 3 4 5 6 7 8 | function findValue(val,ele){ c.find( function (obj){ if (obj.id == val){ $( "#" +ele).html(obj.address.street); } }); } findValue(3, 'byg_price' ); |

ความคิดเห็นที่
6
ขอบคุณสำหรับคำเเนะนำ พร้อมกับอธิบายด้วยตัวอย่าง ให้เห็นภาพครับ

ขอบคุณทุกการสนับสนุน
![]()