Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript TypeError:baseChoiceList.splice不是函数_Javascript_Typeerror_Array Splice - Fatal编程技术网

Javascript TypeError:baseChoiceList.splice不是函数

Javascript TypeError:baseChoiceList.splice不是函数,javascript,typeerror,array-splice,Javascript,Typeerror,Array Splice,我已经为此工作了4个小时,阅读了许多相关的解释,并尝试了其中的几个。我肯定我错过了一个简单的概念,并修复了这个错误。非常感谢你的帮助 ColorChart.setupAnswerChoices() 北卡罗来纳州Basechiosicelist 12,17,1,22,27 当前选秀员12,17,1,22,27,NCN ButtonCoice[对象数组] baseChoiceList[对象字符串] var buttonChoice=[]; 对于(变量i=0;i

我已经为此工作了4个小时,阅读了许多相关的解释,并尝试了其中的几个。我肯定我错过了一个简单的概念,并修复了这个错误。非常感谢你的帮助

ColorChart.setupAnswerChoices()

北卡罗来纳州Basechiosicelist 12,17,1,22,27

当前选秀员12,17,1,22,27,NCN

ButtonCoice[对象数组]

baseChoiceList[对象字符串]

var buttonChoice=[];
对于(变量i=0;i<5;i++){
var randomButtonIndex=Math.floor(Math.random()*(5-i));
buttonChoice=基本选项列表。拼接(随机按钮索引,1);
}
未捕获类型错误:BaseCooiceList.splice不是函数


sessionStorage
(和
localStorage
)都只能将键/值对存储为字符串

因此,您的代码:

var currentChoiceList = sessionStorage.getItem("NE_CURRENT_CHOICE_LIST");
var baseChoiceList = currentChoiceList.slice();
currentChoiceList
不是数组。它是一根绳子。
baseChoiceList
又是一个字符串,它是
currentChoiceList
的副本。(字符串有一个
slice()
方法。)

看起来你真的想这么做:

var currentChoiceList = sessionStorage.getItem("NE_CURRENT_CHOICE_LIST");
var baseChoiceList = currentChoiceList.split(',');

Strings
split
方法接受分隔符,将字符串拆分为字符串数组。

Norman Breau是正确的。建议使用JSON.stringify和JSON.parse的替代方法。然而,Norman使用.split的解决方案正是这种情况下所需的轻量级直接解决方案。
    var what = Object.prototype.toString;
    console.log("buttonChoice  " + what.call(buttonChoice));
    console.log("baseChoiceList  " + what.call(baseChoiceList));
var buttonChoice = [];

for (var i = 0; i < 5; i++) {
    var randomButtonIndex = Math.floor(Math.random() * (5 - i));
    buttonChoice = baseChoiceList.splice(randomButtonIndex,1);
}
var currentChoiceList = sessionStorage.getItem("NE_CURRENT_CHOICE_LIST");
var baseChoiceList = currentChoiceList.slice();
var currentChoiceList = sessionStorage.getItem("NE_CURRENT_CHOICE_LIST");
var baseChoiceList = currentChoiceList.split(',');