Toán tử spread và iterator trong JavaScript
Toán tử spread phân rã bất kỳ đối tượng nào
có iterator. Khi đó, iterator mặc định sẽ được
sử dụng. Hãy cùng xem một ví dụ. Giả sử chúng ta
có collection Map sau:
let map = new Map();
map.set('a', 1);
map.set('b', 2);
map.set('c', 3);
Theo mặc định, khi phân rã, kết quả sẽ là một mảng hai chiều:
let arr = [...map];
console.log(arr); // [['a', 1], ['b', 2], ['c', 3]]
Để lấy mảng các khóa, hãy phân rã iterator tương ứng:
let arr = [...map.keys()];
console.log(arr); // ['a', 'b', 'c']
Tương tự, để lấy mảng các giá trị:
let arr = [...map.values()];
console.log(arr); // [1, 2, 3]
Hãy phân rã đối tượng sau bằng toán tử spread:
let obj = {
a: 1,
b: 2,
c: 3,
[Symbol.iterator]: function *(){
for (let key in this){
yield this[key];
}
}
};