Destructuring assignment
解構賦值可以將 array / object 的資料分散儲存到變數當中。
Array destructuring
// we have an array with the name and surname
let arr = ["Ilya", "Kantor"]
// destructuring assignment
let [firstName, surname] = arr;
alert(firstName); // Ilya
alert(surname); // Kantor
// 解構賦值並沒有破壞原本的 array,而是將 array 值複製到變數當中。
let [firstName, surname] = "Ilya Kantor".split(' ');
// let [firstName, surname] = arr;
let firstName = arr[0];
let surname = arr[1];
// 不要的值可以用,代替
// second element is not needed
let [firstName, , title] = ["Julius", "Caesar", "Consul", "of the Roman Republic"];
alert( title ); // Consul
// 可以使用在任何 iterable
let [a, b, c] = "abc"; // ["a", "b", "c"]
let [one, two, three] = new Set([1, 2, 3]);
// 變數可以是任何東西
let user = {};
[user.name, user.surname] = "Ilya Kantor".split(' ');
alert(user.name); // Ilya
// 可以使用在 key-value 上
let user = {
name: "John",
age: 30
};
// loop over keys-and-values
for (let [key, value] of Object.entries(user)) {
alert(`${key}:${value}`); // name:John, then age:30
}
// 可以使用在 map
let user = new Map();
user.set("name", "John");
user.set("age", "30");
for (let [key, value] of user.entries()) {
alert(`${key}:${value}`); // name:John, then age:30
}The rest ‘…’
Default values
Object destructuring
The rest operator
Gotcha without let
letNested destructuring
Smart function parameters
Last updated
Was this helpful?