[JavaScript] วิธีใช้ Spread syntax (...)
Spread syntax คือการนำค่าของตัวแปรที่มีลักษณะเป็น collection ไม่ว่าจะ array หรือ object มาแจกแจงกระจายออกมาใช้งาน ซึ่งจะคนละอย่างกับ Rest syntax (แต่ใช้ ... เหมือนกัน) โดย Rest syntax จะเป็นการประกาศให้ function รับ argument กี่ตัวก็ได้ ซึ่งจะเขียนในบทความถัดไป
Spread syntax จะมีการใช้งานหลัก ๆ อยู่ 3 รูปแบบดังนี้
ใช้ส่ง arguments ให้ function
function sum(x, y, z) {
return x + y + z;
}
let numbers = [1, 2, 3];
console.log(sum(...numbers)); // 6
และหากเรานำไปใช้กับ function ที่ประกาศด้วย Rest syntax จะมองเห็นความเจ๋งของ Spread syntax ได้ชัดขึ้น
function sum(...theArgs) {
//theArgs รับเข้ามาจะเป็น array
return theArgs.reduce((previous, current) => {
return previous + current;
});
}
let numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
console.log(sum(...numbers)); // 55
ใช้งานกับ array
let a = [1, 2, 3];
let b = a;
a[0] = 0;
console.log(b); // [0, 2, 3]
ถ้าเราต้องการจะ clone array ให้มันเป็นคนละตัวแยกกันไป เราสามารถใช้ Spread syntax เข้ามาช่วยได้
let a = [1, 2, 3];
let b = [...a]; //ใช้ Spread syntax
a[0] = 0;
console.log(b); // [1, 2, 3]
อีกความเจ๋งของ Spread syntax คือเราสามารถ merge รวม array และเพิ่มค่าใหม่เข้าไปได้ด้วย
let a = [1, 2, 3];
let b = [4, 5, 6];
let c = [
...a,
7, 8, 9,
...b
];
console.log(c); // [1, 2, 3, 7, 8, 9, 4, 5, 6]
ใช้งานกับ object
จะคล้ายกับ array คือใช้เพื่อ clone ได้ และ merge รวม property ของ object ได้ด้วย
let a = {firstname: 'John', lastname: 'Doe', job: 'Programmer'};
let b = {height: 190, age: '30', firstname: 'Amelia'};
let c = {
...a,
...b,
hobby: 'Playing games',
};
console.log(c); // Object { firstname: "Amelia", lastname: "Doe", job: "Programmer", height: 190, age: "30", hobby: "Playing games" }
จะสังเกตเห็นว่า firstname จะโดนทับค่าด้วยตัวหลังสุด กลายเป็น Amelia จะมีประโยชน์มากเวลาเราต้องการอัพเดทค่าของ object ด้วยค่าใหม่หลาย ๆ ค่า
ความคิดเห็น
แสดงความคิดเห็น