ถ้าเขียนเงื่อนไขโดยใช้ if แยกกันจะทำให้เกิดปัญหาได้ เมื่อมีเงื่อนไขมีทับซ้อนกัน จะทำให้เกิดการตรวจสอบเงื่อนไขทุกๆ if หากมีหลายเงื่อนไขนิยมใช้ if else มากกว่า
ข้อนี้มาลองดูว่าต้องการอะไร
- ถ้า
prop
ไม่ใช่ tracks
และ value
ไม่ใช่ empty string ให้อัปเดต หรือกำหนด prop
ของอัลบั้ม ให้มีค่าเป็น value
if (prop != "tracks" && value != "") {
records[id][prop] = value
}
- ถ้า
prop
เป็น tracks
แต่อัลบั้มไม่มี property tracks
ให้สร้าง empty array และเพิ่ม value
เข้าไป
if (prop == "tracks" && value!= "" && records[id].hasOwnProperty(prop)==false) {
records[id][prop] = [value]
}
- ถ้า
prop
เป็น tracks
และ value
ไม่ใช่ empty string ให้เพิ่ม value
ไปยังท้ายอัลบั้มที่มี array tracks
อยู่
if (prop == "tracks" && value!= "" && records[id].hasOwnProperty(prop)) {
records[id][prop].push(value)
}
- ถ้า
value
เป็น empty string ให้ลบ property prop
ออกจากอัลบั้ม
if (value== "") {
delete records[id][prop]
}
เอามารวมกัน
if (prop != "tracks" && value != "") {
records[id][prop] = value
}else if (prop == "tracks" && value!= "" && records[id].hasOwnProperty(prop)==false) {
records[id][prop] = [value]
}else if (prop == "tracks" && value!= "" && records[id].hasOwnProperty(prop)) {
records[id][prop].push(value)
}else if (value== "") {
delete records[id][prop]
}
จะเห็นว่าในกรณี prop เป็น tracks
จะมีเงื่อนไขบางส่วนเหมือนกัน อาจจะปรับเปลี่ยนเงื่อนไขให้ดูง่ายขึ้น
if (prop == "tracks" && value != "") {
if (records[id].hasOwnProperty(prop)) {
records[id][prop].push(value);
} else {
records[id][prop] = [value];
}
} else if (value != "") {
records[id][prop] = value;
} else {
delete records[id][prop];
}