[JS]解構賦值


 
解構賦值 是一種特殊的語法,它使我們可以將數組或對象“拆包”為到一系列變量中,因為有時候使用變量更加方便。解構操作對那些具有很多參數和默認值等的函數也很奏效。
1 let arr = [ "john", "lily" ]
2 let [ first, second ] = arr
3 console.log(first, second) // john   lily
4 
5 let [ firstName, secondName ] = "Neal Caffiry".split(" ")
6 console.log(firstName, secondName) // Neal   Caffiry

 

數組中不想要的元素也可以通過添加額外的逗號來把它丟棄
1 let [, firstName, , secondName] = ["jack", "Neal", "lily", "Caffiry"]
2 console.log(firstName, secondName) // Neal Caffiry

 

等號右側可以是任何可迭代對象
1 let [a, b, c] = "abc"; // ["a", "b", "c"]
2 let [one, two, three] = new Set([1, 2, 3])

 

賦值給等號左側的任何內容
1 let user = {}; // 這里必須打分號
2 [user.name, user.age] = "jack 20".split(" ")
3 
4 console.log(user) // {name: "jack", age: "20"}

 

如果不只是要獲得第一個值,還要將后續的所有元素都收集起來,可以使用三個點 "..." 來再加一個參數來接收“剩余的”元素:
1 let [name1, name2, name3, ...rest] = ["jack", "lily", "lucy", "alice", "john", "neal"]
2 console.log(name1, name2, name3) // jack lily lucy
3 console.log(rest) // ["alice", "john", "neal"] 剩下的元素會組成一個新數組賦值給rest

 

如果賦值語句中,變量的數量多於數組中實際元素的數量,賦值不會報錯。未賦值的變量被認為是 undefined:
1 let [q, w, e] = ["jack"]
2     console.log(w, e) // undefined undefined

 

可以設置默認值
1 let [m = "lily", n = "john"] = ["jack"]
2 console.log(m, n) // jack john

 

解構賦值同樣適用於對象
 1 let options = {
 2   title: "Menu",
 3   width: 100,
 4   height: 200
 5 }
 6 
 7 let { width, title, height } = options // 改變左邊順序也不會影響
 8 
 9 console.log(title);  // Menu
10 console.log(width);  // 100
11 console.log(height); // 200

 

練習:

新建一個函數 topSalary(salaries),返回收入最高的人的姓名。
      如果 salaries 是空的,函數應該返回 null。
      如果有多個收入最高的人,返回其中任意一個即可。
 1 let salaries = {
 2   "John": 100,
 3   "Pete": 300,
 4   "Mary": 250,
 5   "jack": 300,
 6 }
 7 console.log(topSalary(salaries)) // jack
 8 
 9 function topSalary(salaries) {
10   return person = (JSON.stringify(salaries) === '{}') ? null : Object.entries(salaries).sort().pop()[0]
11 }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM