2017-02-22 24 views
-1

我一直在編程一個系統,應該刪除數組的第一個索引。而不是將數組從(例如)「1,2,3,4,5」更改爲「2,3,4,5」,控制檯給出錯誤:「Uncaught TypeError:num.splice不是函數」。我聽說num.splice 不是的一個函數,它是一個操作(或某物)來刪除數組的第一個索引值。我很困惑,當我使用w3Schools的示例代碼時,控制檯中沒有輸出錯誤。我不明白爲什麼會發生這種情況。JavaScript Array.shift不工作

(我已經給整個代碼以防萬一它做語法問題)

function dCrypt() { 
    var num = document.getElementById("demoin").value; // ex: a127 
    var key = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"]; 
    var mod = 0; 
    var out = 0; 
    var prep = 0; 
    var pre = 0; 
    num.split(""); 
    mod = num[0]; 
    pre = key.indexOf(mod); 
    num.splice(0,1); 
    for (i=0;i <= pre;i++) { 
     prep += 26; 
    } 
    out = Math.floor(num + pre); 
    document.getElementById("demoout").innerHTML = out; 
} 

提前感謝!

+1

'num'不是數組。這是一個字符串。如果你想調用拼接,你首先必須將其轉換爲數組。你可以用'Array.from(num)'做到這一點。 – adrice727

回答

6

當你分割「民」,你必須將其重新分配

num = num.split(""); 
0

從W3Schools的參考你的鏈接:

The splice() method adds/removes items to/from an array, and returns the removed item(s).

正如你所看到的VAR num是字符串(而不是一個數組)並且具有編號爲demoin的元素的值。

由於您試圖拼接一個字符串而不是數組。該錯誤顯示在控制檯中。

解決方案:

無論您split的值存儲在數組中(也可能是num本身),然後splice數組。

num = num.split(""); 
... 
num.splice(0,1);