Ở bài JS Functions, ta đã đề cập đến hàm có số lượng tham số không biết trước.
Ở đó ta sử dụng toán tử ... kèm thêm một tên biến bất kỳ làm tham số cho arrow function:
const sumAllNums = (...args) => {
return args.reduce((sum, num) => sum + num)
}
console.log(sumAllNums(1, 2, 3, 4, 5)) // 15Toán tử ... ở đây được gọi là rest operator (mặc dù nhìn giống spread operator). Toán tử này sẽ gom nhóm danh sách đối số truyền vào (1, 2, 3, 4, 5) thành một mảng (args).
Rest Elements of Array
Ta dùng rest operator để lấy các phần tử còn lại (rest element) của mảng dưới dạng một mảng khác:
const nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
let [num1, num2, num3, ...others] = nums
console.log(num1, num2, num3) // 1, 2, 3
console.log(others) // Array [4, 5, 6, 7, 8, 9, 10]Attention
Lưu ý: rest element ở ví dụ trên cần phải là phần tử cuối cùng trong biểu thức.
Rest Properties of Object
Tương tự, ta cũng có thể dùng rest operator để lấy các thuộc tính còn lại của đối tượng dưới dạng một đối tượng khác:
const person = {
name: "Quân",
age: 20,
school: "HCMUS",
isSingle: true,
}
let { name, age, ...others } = person
console.log(name) // Quân
console.log(age) // 20
console.log(others) // {school: 'HCMUS', isSingle: true}Tip
Có thể xóa đi một key trong object bằng cách sử dụng rest operator.
Chẳng hạn ta cần xóa key status:
const person = {
name: "Quân",
age: 20,
school: "HCMUS",
year: 2,
status: "single",
}
let { status, ...newObject } = person
console.log(newObject) // {name: 'Quân', age: 20, school: 'HCMUS', year: 2}
sort file.ctime asc