javascript - 在 JavaScript 中从数组中删除项目

标签 javascript jquery arrays

经常看到这个问题,但找不到我正在寻找的东西。

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/

相关文章:

javascript - cucumber + ruby + capybara + Selenium : How to make the 'visit' method wait for dynamic content

javascript - 我想在延迟一段时间后在产品li中一一添加淡入淡出效果

javascript - 如何使用 Service Worker 或缓存对象通过 JavaScript 设置缓存过期时间

javascript - tinymce 编辑器调整大小功能不起作用

php - 在 php 中使用数组和关联数组创建数组数组的有效方法

javascript - 在脚本中添加图像路径以从json文件中获取图像

来自另一个 js 函数的 JQuery 自动完成源

javascript - 4 个元素的高度相等

ios - 目标 - C、协议(protocol)、数组、字典 - 测试

c# - 使用LINQ C#在字符串列表中查找字符出现频率最高的字符串