繁体   English   中英

删除数组的一个元素,就是删除所有的 javascript

[英]Removing an element of an array, is removing all javascript

试图在单击按钮时从数组中删除一个元素 发生的事情是它似乎在第二次单击时删除了所有元素?

我已经编辑了这个; 我需要的是重置 winArray winArray=[]; 每次点击按钮时,用 mainSlotArr 填充它,然后删除 1 个元素,检查控制台,它只执行一次

这是我迄今为止尝试过的;

<!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>

提前致谢

splice数组方法不仅返回某个范围内的元素数组,还会将它们从原始数组中移除,因此当您在mainSlotArr上调用参数为 0 的splice时,您是在告诉它“从第一个元素开始获取所有元素”。 如果您想一次获取一个元素,则需要向splice传递第二个参数,该参数确定要提取splice(0, 1)的元素数量。

您似乎正在尝试删除数组的第一个元素?

如果是这样,为什么不使用shift()

IE:

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在这里

嗨,有时间回去看看这个,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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM