JavaScript ใช้ตัวแปร เพื่อเข้าถึงข้อมูลในอาเรย์ไม่ได้ ต้องเขียนแบบใหนครับ
ปัญหานี้ในภาษาการโปรแกรมอื่นๆ เรียกว่า index out of bounds
แต่เผอิญว่าใน JavaScript ไม่มีการสะกิดบอกหรือแจ้งเตือน error ใดๆ เกี่ยวกับ error ดังกล่าว ตอบกลับแค่ undefined
วิธีเข้าถึง JSON Array ใน JSON Object ก็เข้าแบบ JS Array ทั่วไป เข้าใจถูกแล้วครับ
เพียงแต่คุณอาจลืมไปว่า count สุดท้ายเท่ากับ Array.length
แต่การอ้างอิง Array ในหลายภาษารวม JS จะเริ่มต้นที่ index = 0 และสิ้นสุดที่ Array.length - 1 (ไม่ใช่ Array.length)
วิธีแก้ โดยคงรูปแบบการเขียนเหมือนเดิม
Code (JavaScript)
let count = -1; //แค่นี้ก็ไม่ undefined แล้ว
หรือ
Code (JavaScript)
console.log(data.statistic[count-1]['winner']);
ถ้าต้องการใช้ element สุดท้ายของ Array ไม่จำเป็นต้องลูป
Code (JavaScript)
$.get("https://Example.com/api/Example/24/stats" )
.done(function(data) {
//You can now read the defined property of 'winner' with no loop.
console.log(data.statistic[data.statistic.length - 1]['winner']);
});
หากต้องการเก็บทุก element ใช้ประโยชน์จาก for...in
Code (JavaScript)
$.get("https://Example.com/api/Example/24/stats" )
.done(function(data) {
for (var c in data.statistic){
console.log(data.statistic[c]['winner']);
}
});
ฯลฯ
นอกจากนี้ ปัญหานี้ยังสามารถแก้ได้อีกเกือบร้อยวิธี (ผมลองเล่นและทำถึงแค่วิธีที่ 67)
Date :
2020-06-21 16:04:44
By :
PhrayaDev
ขอบคุณมากครับ
Date :
2020-06-22 16:19:50
By :
828899737459956
ขอถามต่ออีกนิดนึ่งนะครับหาตามกูเกิลก็ไม่ค่อยมีครับคือผมต้องการเข้าถึงตัวแปร items จากนอก scope ของ $getJSON() จะเรียกใช้แบบใหนครับ พอจะมีวิธีใหมครับ
Code (JavaScript)
$.getJSON("https://wwww.com/api/wwww/23/stats", function(data) {
var items = [];
$.each(data.statistic, function(key, val) {
$.each(val, function(keys, vals){
if(keys == "winner"){
items.push(vals); //ต้องการใช้ตัวแปรตัวนี้
}
});
});
});
console.log(items[0]); //items is not defined
ประวัติการแก้ไข 2020-06-25 17:14:05
Date :
2020-06-25 17:12:58
By :
828899737459956
ประกาศ items ไว้นอก หรือ ใส่ callback function ครับ
Date :
2020-06-25 22:06:38
By :
PhrayaDev
Load balance : Server 03