经常看到这个问题,但找不到我正在寻找的东西。
onClick
我将一个项目推送到我拥有的数组中,但是,如果我的数组中有 3 个项目,我不想再推送项目了。
var selectedData = [];
我设置了空变量。
var index = selectedData.indexOf(3);
然后我得到数组的索引,即 3
if (index > 3) {
selectedData.splice(index, 1);
}
然后在我的 if 语句
中,我说,如果我的索引为 3,大于 3,则在 index
处拼接并删除一个。
selectedData.push(TheThing);
如果上面的 if 语句不成立,我会将 TheThing
推送到我的数组。
但是,我有一个变量 var arrayLength = selectedData.length;
来获取长度,当我控制台记录它时,它从 0
开始并拼接任何项目4 之后。不是 3。
知道我做错了什么或误解了什么吗? 谢谢
<小时/>我的代码的更完整示例
var selectedData = [];
myElement.on('click', function() {
var index = selectedData.indexOf(3);
if (index > 3) {
selectedData.splice(index, 1);
}
var arrayLength = selectedData.length;
console.log(arrayLength, 'the length');
});
简而言之,onClick
检查我的数组并删除添加到我的数组中的第三个之后的所有内容。
最佳答案
你希望它表现为堆栈还是队列?
所以你的代码在这里:
var index = selectedData.indexOf(3);
没有抓取第三个索引 - 它抓取第一个看到 3 的索引,如果没有,则抓取 -1。将 if 语句替换为,
if (selectedData.length > 3) {
selectedData.pop() // removes last element (stack)
// or
selectedData = selectedData.slice(1) //remove first element (queue)
}
关于javascript - 在 JavaScript 中从数组中删除项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33809479/