JavaScript Array.shift无效

时间:2017-02-22 00:36:57

标签: javascript html arrays

我一直在编写一个应该删除数组第一个索引的系统。而不是从(即)1,2,3,4,5和#34;到" 2,3,4,5"控制台出错:"未捕获TypeError:num.splice不是函数"。我听说num.splice 不是一个函数,它是一个删除数组的第一个索引值的操作(或其他东西)。我很困惑,当我使用w3Schools中的示例代码时,控制台中没有输出错误。我不明白为什么会这样。

(我已经提供了整个代码以防万一与语法问题有关)

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;
}

提前致谢!

2 个答案:

答案 0 :(得分:6)

当你分开&#39; num&#39;你必须重新分配它

num = num.split("");

答案 1 :(得分:0)

参考w3schools的链接:

  

splice()方法在中添加/删除项目,并返回已删除的项目。

正如您所看到的,var num是字符串(而不是数组),并且具有标识为demoin的元素的值。

因为你试图拼接一个字符串而不是一个数组。该错误显示在控制台中。

<强>解决方案:

split的值存储在数组中(可能是num本身),然后splice存储该数组。

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