2017-05-26 59 views
1

我只是好奇,爲什麼代碼工作的此塊...爲什麼這現在作爲一個返回聲明?

function slasher(arr, howMany) { 
    arr.splice(0, howMany); 
    return arr; 
} 

slasher([1, 2, 3], 2); 

但是,這不?我的所需結果是"[3]"

function slasher(arr, howMany) { 
    return arr.splice(0, howMany); 
} 

slasher([1, 2, 3], 2); 
+0

https://jsfiddle.net/6dqpLt1u/ 它可以用任何方式。什麼不工作? – CaptainHere

回答

0
function slasher(arr, howMany) { 
    arr.splice(0, howMany); 
    return arr; 
} 

slasher([1, 2, 3], 2); 

這將第一「剪接」給定的陣列中,這在本質上只是將來自陣列(2)去除第一howMany元件。然後您返回數組(現在與前兩個​​元素相同的數組不同),因此[3]

function slasher(arr, howMany) { 
    return arr.splice(0, howMany); 
} 

slasher([1, 2, 3], 2); 

這將返回原始拼接的結果。從它說的文檔返回值https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/splice?v=control),這將返回從數組中刪除的元素,因此[1, 2]

+0

太棒了!非常感謝! –

3

回答這樣的問題只是諮詢一個好的文檔。我建議Mozilla的MDN - Array.splice()

拼接()方法通過去除現有 元件和/或添加新元素改變的數組的內容。

返回值

含有缺失元素的數組。如果只刪除一個元素 ,則返回一個元素的數組。如果刪除了 沒有元素,則返回一個空數組。

它告訴我們,這種方法改變了就地陣列,即myArray.splice()直接變異/改變myArray代替建立一個新的數組,並返回該的。返回的值實際上是刪除了元素的列表。

0

@Sam,splice方法通過刪除現有元素和/或添加新元素來更改數組內容(本身)。因此,在第一個代碼示例中,您正在獲取[3]。

但是,它返回一個包含已刪除元素的數組。如果只有一個元素被刪除,則返回一個元素的數組。如果沒有元素被移除,則返回一個空數組。

作爲第二個代碼示例中的結果,您會得到:[1,2]。

0

這是因爲Splice返回的數組包含已刪除的元素,而不是數組中的其餘部分。通過返回arr,您在數組被「砍掉」之後返回了數組。

來源:Splice at MDN

0

在任何語言中的大多數功能,要麼是存取器,或存取器。他們要麼訪問一個財產,要麼改變財產或結構。在這種情況下,splice()是兩個。閱讀關於您使用的所有函數的文檔非常重要,特別是在JS中,因爲它們有時會做更多的事情。

有時一個函數可能會被重載,其中一個版本是一個訪問器,另一個版本是增變器。

無論何時將數組傳遞給函數,都要確保知道數組內容可能會發生什麼。

Splice在同時更改數組內容的同時返回已移除的元素。返回值不是您傳入的數組。這在多種語言中是常​​見的,用於從數據結構中返回已刪除的項目。

相關問題