สอบถามวิธีเขียน script กำหนดตัวเเปรที่รับค่ามาจาก api หน่อยครับ

ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา สอบถามวิธีเขียน script กำหนดตัวเเปรที่รับค่ามาจาก api หน่อยครับ

สอบถามวิธีเขียน script กำหนดตัวเเปรที่รับค่ามาจาก api หน่อยครับ
ผมมีตัว array ตามตัวอย่างข้อมูลด้านล่างนี้ โดยต้องการจะกำหนดตัวเเปรให้กับ ค่าต่างๆ ที่มีใน array โดยต้องการจะอ้างอิงไปยังตัว array model:{} ครับ ซึ่งผมไม่ทราบว่าต้องเขียนอย่างไรเพื่อให้มันกำหนดตัวเเปร เพื่อเก็บค่าได้ถูกต้อง รบกวนพี่ๆเเนะนำ เเก้ไขให้หนอ่ยครับ

ID: "58",
idmem: "8",
idbrand: "64",
model: {
id: 11299,
year: 2018,
idbrand: 64
}

function byg_replace(id){
	var md = model[id];
	$("#byg_price").html("");
}


Antinew007 09-09-2020 16:04:10

คำแนะนำ และการใช้งาน

สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก


  • ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
  • เปลี่ยน


    ( หรือ เข้าใช้งานผ่าน Social Login )

 ความคิดเห็นที่ 1
คำถาม กับข้อมูลไม่ชัดเจน ถ้าเป็น ข้อมูล array ของ js จะเป็น ประมาณ
 
a = [a,b,c];
 
ถ้าเป็น array object ของ js จะเป็นประมาณ
 
var b = [
  {id:'1',name:'A'},
  {id:'3',name:'B'}
]
 
หรือ 
 
var c = [
  {
    id:'1',
    name:'A',
    address:{
      street:'street1'
    }    
  },
  {
    id:'3',
    name:'B',
    address:{
      street:'street2'
    }
  }
]
 
นั่นคือ 
 
c[0] =   {
    id:'1',
    name:'A',
    address:{
      street:'street1'
    }    
  }
 
เราไม่สามารถอ้างอิงข้อมูล ของ c[0] โดยส่งผ่าน id ที่เป็นตัวเชื่อมความสัมพันธ์ได้ นอกเสียจาก id จะเป็นค่า key
ของ array เช่น
 
c[1] =   {
    id:'1',
    name:'A',
    address:{
      street:'street1'
    }    
  }
 
ถ้าข้างต้นเราสามารถอ้างอิงค่าเป็น c[1].address ในฟังก์ชั่นได้
แต่ถ้าไม่เป็นแบบข้างต้น ที่สามารถทำได้คือใช้คำสั่งค้นหา ค่าที่เป็น primary ไม่ซ้ำกัน แล้วเทียบค่า หากตรงกันก็คินค่าข้อมูลนั้นออกมา
หรือใช้งานค่านั้น และถ้าทำเป็นฟังก์ชั่น เราก็ส่ง array ข้อมูลนั้นเข้าไปด้วย 
 
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 ก็จะประมาณนี้
 
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 เข้าไปก็ได้ สามารถเรียกใช้งานได้เลย

function findValue(val){
  c.find(function(obj){
    if(obj.id == val){
      console.log(obj.address.street);
      //return obj;
    } 
  });
}
findValue(3);




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


Antinew007 10-09-2020 10:04
 ความคิดเห็นที่ 3
key ของ array ใน javascript จะเป็นตัวเลข หากไม่กำหนด จะเริ่มต้นที่ 0 เสมอ
เราสามารถส่ง id ที่เป็น key ของ array เพื่อเลือก เฉพาะข้อมูลในฟังก์ชั่นได้
 
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 จะไม่เหมือนกัน


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


Antinew007 10-09-2020 15:02
 ความคิดเห็นที่ 5
ถ้าใช้เป็นข้อมูล ก็อ้างอิง object แต่ละ key 
ถ้าเป็น array กำหนด key ใน []
แต่ถ้าเป็น object กำหนด key ต่อกันด้วยจุด 
ถ้ามีทั้ง array และ object ก็ใช้ทั้ง [] และ . เช่น c[1].address.street
 
แนวทางใช้งาน ก็เอาค่าข้อมูลไปแทรกในคำสั่ง html() ได้เลย หรือถ้าจะแทรก
เฉพาะข้อความ ใช้เป็น text() แทน html() ได้ เช่น  
 
$("#byg_price").text(obj.address.street);
 
ตัวอย่าง

function findValue(val){
  c.find(function(obj){
    if(obj.id == val){
     $("#byg_price").html(obj.address.street);
    } 
  });
}
findValue(3);
 
คำสั่งข้างต้นเราใช้ฟังก์ชั่น find() ซึ่งเป็นฟังก์ชั่นของ array ตัวแปร c ก็คือตัวแปร ที่สามารถเรียก
ใช้ฟังก์ชั่น find() ได้
 
หรือถ้าอยากประยุกต์ให้สามารถใช้ฟังก์ชั่นนี้ แทรก ใน element อะไรก็ได้ ก็ลองปรับเป็น
 
function findValue(val,ele){
  c.find(function(obj){
    if(obj.id == val){
     $("#"+ele).html(obj.address.street);
    } 
  });
}
findValue(3,'byg_price');


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


Antinew007 10-09-2020 15:28
1






เว็บไซต์ของเราให้บริการเนื้อหาบทความสำหรับนักพัฒนา โดยพึ่งพารายได้เล็กน้อยจากการแสดงโฆษณา โปรดสนับสนุนเว็บไซต์ของเราด้วยการปิดการใช้งานตัวปิดกั้นโฆษณา (Disable Ads Blocker) ขอบคุณครับ