最近在看《javascript權威指南(第6版)》,淘寶團隊翻譯的。看到數組那一章,介紹JS數組的一些方法。
pop() push() 把數組當作棧,然後在數組的尾部分別是刪除添加數組元素。
unshift() shift()也是把陣列當成棧,但,是在陣列的頭部分別刪除添加元素。
四個方法都會更新陣列的長度。
但是對於提到的回傳值,看到給的範例有點疑惑。
書上的範例程式碼:
var statck=[]; //stack:[]
stack.push(1,2); //stack:[1,2] 返回2
stack.pop(); //stack:[1] 返回2
stack.push(3); //stack:[1,3] 返回2
stack.pop(); //stack:[1] 返回3
stack.push([4,5]); //stack:[1,[4,5]] 返回2
stack.pop(); //stack:[1] 返回[4,5]
stack.pop(); // stack:[] 返回1
傳回值應該是目前刪除或插入的值
第二行最後插入的是數值2,所以回傳值是2.
那為什麼上面第4行程式碼還有返回值2?不是數值3麼?因為插入的是數值3.
stack.push(3); //stack:[1,3] 返回2
然後第6行也不理解後面的回傳值:
stack.push([4,5]); //stack:[1,[4,5]] 返回2
為什麼回傳數值是2不是5?
即:
)push()
和unshift()
會傳回新陣列的長度,而pop()
和shift()
會傳回移除的元素(當陣列為空時傳回shift()
會傳回被移除的元素(當陣列為空時傳回1,pusn 回傳的是陣列的長度。
2,pop,回傳的是刪除的元素。
3,unshift, 回傳的是陣列的長度。
4,shift 回傳的是刪除的元素。