尝试在按钮单击时从数组中删除元素 发生了什么事情似乎是在第二次点击时删除了所有元素?
我编辑了这个;我需要的是winArray重置winArray = []; evrytime单击按钮,用mainSlotArr填充它,然后删除1个元素,检查控制台,它只执行一次
这是我到目前为止所尝试过的;
<head>
<title>{% block title %}{{ title }}{% endblock %}</title>
<meta name="description" content="{% block description %}{{ description }}{% endblock %}" />
</head>
<body>
{% block body %}{{ content }}{% endblock %}
</body>
提前致谢
答案 0 :(得分:0)
splice
数组方法不仅返回某个范围内的元素数组,而且还将它们从原始数组中删除,因此当您在splice
上使用参数调用mainSlotArr
时0,你告诉它“从第一个开始获取所有元素”。如果你想一次获得一个元素,那么你需要传递splice
第二个参数,它确定要提取的元素数量splice(0, 1)
。
答案 1 :(得分:0)
您似乎正在尝试删除数组的第一个元素?
如果是,为什么不使用shift()
即:
var someArr = [1,2,3,4];
someArr.shift(); // returns 1
// now someArr is : [2,3,4]
否则只需:
function removeFromArray(array, el) {
var pos = array.indexOf(el);
pos > -1 && array.splice(pos, 1);
}
removeFromArray(modifiedArray, 'someArrayElement');
JSbin here
答案 2 :(得分:0)
你好回去看看这个,mainSlotArr和所有阵列被清空的原因是我应该使用切片而不是拼接 (当你在压力下工作时会发生这种情况!!) 下面的脚本按预期工作,但实在无法相信这已被标记为
<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>