删除数组的一个元素就是删除所有javascript
尝试在单击按钮时从数组中删除元素 发生的事情是,它似乎在第二次单击时删除了所有元素 我编辑过这个;我需要的是将winArray重置为winArray=[]; 每次单击按钮时,用mainslotar填充它,然后删除1个元素,检查控制台,它只执行一次 这就是我迄今为止所尝试的删除数组的一个元素就是删除所有javascript,javascript,arrays,Javascript,Arrays,尝试在单击按钮时从数组中删除元素 发生的事情是,它似乎在第二次单击时删除了所有元素 我编辑过这个;我需要的是将winArray重置为winArray=[]; 每次单击按钮时,用mainslotar填充它,然后删除1个元素,检查控制台,它只执行一次 这就是我迄今为止所尝试的 <!doctype html> <html> <head> <meta charset="UTF-8"> <script> mainSl
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<script>
mainSlotArr =["1", "2", "3", "4", "5", "6"];
var winArray =[];
var winSpin = function () {
winArray = mainSlotArr.splice(0);
var winIcon = winArray[0];
winArray = removeFromArray(winArray, winIcon);
}
function removeFromArray(array, el) {
var pos = array.indexOf(el);
pos > -1 && array.splice(pos, 1);
console.log(winArray)
}
</script>
</head>
<body>
<div>
<button type="button" onclick="winSpin();">Click Me!</button>
</div>
</body>
</html>
mainslotar=[“1”、“2”、“3”、“4”、“5”、“6”];
var winArray=[];
var winSpin=函数(){
winArray=mainSlotar.splice(0);
var winIcon=winArray[0];
winArray=removeFromArray(winArray,winIcon);
}
函数removeFromArray(数组,el){
var pos=数组索引(el);
位置>-1和阵列拼接(位置1);
console.log(winArray)
}
点击我!
提前感谢
splice
array方法不仅返回某个范围内的元素数组,而且还将它们从原始数组中删除,因此当您在mainslotar
上调用splice
时,参数为0,您告诉它“从第一个开始获取所有元素”。如果要一次获取一个元素,则需要传递第二个参数splice
,该参数确定要提取的元素量splice(0,1)
似乎要删除数组的第一个元素
如果是,为什么没有用
i、 e:
否则,只需:
function removeFromArray(array, el) {
var pos = array.indexOf(el);
pos > -1 && array.splice(pos, 1);
}
removeFromArray(modifiedArray, 'someArrayElement');
JSbin我有时间回去看看,mainslotar和所有数组都被清空的原因是我应该使用slice而不是splice (这就是你在压力下工作时的情况!!) 下面的脚本按预期工作,但真的不敢相信它被降低了
<head>
<meta charset="UTF-8">
<script>
var mainSlotArr =["1", "2", "3", "4", "5", "6"];
var mCopy = mainSlotArr.slice();
var firstTime = true;
var winArray = [];
var winSpin = function () {
winArray = mCopy.slice();
console.log(winArray)
var winIcon = winArray[0];
winArray = removeFromArray(winArray, winIcon);
}
function removeFromArray(arr, el) {
var pos = arr.indexOf(el);
pos > -1 && arr.splice(pos, 1);
mCopy = winArray.slice();
}
</script>
</head>
<body>
<div>
<button type="button" onclick="winSpin();">Click Me!</button>
</div>
</body>
</html>
var mainslotar=[“1”、“2”、“3”、“4”、“5”、“6”];
var mCopy=mainslotar.slice();
var firstTime=true;
var winArray=[];
var winSpin=函数(){
winArray=mCopy.slice();
console.log(winArray)
var winIcon=winArray[0];
winArray=removeFromArray(winArray,winIcon);
}
函数removeFromArray(arr,el){
var pos=arr.indexOf(el);
位置>-1和排列拼接(位置1);
mCopy=winArray.slice();
}
点击我!
你的点击函数是什么样子的?使用数组.prototype.filter
这是一个很好的实践:控制台.log([1,2,3,4,5]。filter(i=>i!==5))代码>显示mainslotar
数组项在执行splice语句后将winArray分配给mainslotar<代码>var-winSpin=function(){var-winArray=[];winArray=mainslotar.splice(0);var-winIcon=winArray[0];toDel=winArray.indexOf(winIcon);winArray.splice(toDel,1);console.log(winArray.length);//第一次单击时得到9,第二次单击时得到0??mainslotar=winArray;}
@Sachin K可以,但我不是想修改mainslotar,我是想每点击一次就将mainslotar复制到winArray,然后删除一个元素,当再次点击按钮时,也要这样做,所以winArray每次都会等于10,然后等于9。是的,但向前移动时,它可能是任何元素OK,我已经更新了一个简单的函数,它将从数组中删除一个元素。请注意,它不会通过引用修改原始数组,因此您需要将函数的结果重新分配给该数组。您好,谢谢您的帮助,我已使用您的代码编辑了我的上述帖子,但仍然没有问题。我的错误,我使用了错误的方法。我已经更新了代码片段。看一看jsbinHi仍然不起作用当我尝试用上面的代码实现它时,你的代码每次运行时都会启动mainslotar,我需要将mainslotar复制到winArray,因为我需要同时将它用于其他函数,它工作一次,然后将winArray设置为0,
<head>
<meta charset="UTF-8">
<script>
var mainSlotArr =["1", "2", "3", "4", "5", "6"];
var mCopy = mainSlotArr.slice();
var firstTime = true;
var winArray = [];
var winSpin = function () {
winArray = mCopy.slice();
console.log(winArray)
var winIcon = winArray[0];
winArray = removeFromArray(winArray, winIcon);
}
function removeFromArray(arr, el) {
var pos = arr.indexOf(el);
pos > -1 && arr.splice(pos, 1);
mCopy = winArray.slice();
}
</script>
</head>
<body>
<div>
<button type="button" onclick="winSpin();">Click Me!</button>
</div>
</body>
</html>