如何从用户制作的数组中具体拼接出一个项目

How to specifically splice out an item from a user made array?

本文关键字:拼接 项目 一个 用户 数组      更新时间:2023-10-04

我正试图只使用一个按钮从数组中添加/删除特定项。到目前为止,当我单击按钮时,它将把项目推入数组,如果我再次单击,它将从数组中删除项目。我的问题是,如果我有更多的按钮,每次都会向数组中添加不同的项目,那么再次单击任何按钮都会完全清空数组。

我知道这是我的剪接,可能只是因为现在是凌晨1点,但如果我能理解我做错了什么,我会被诅咒的。如果有人能告诉我做这件事的正确方法,那就太棒了。这是我的样本代码

    var libary =  Array();
    Array.prototype.contains = function ( needle ) {
       for (i in this) {
           if (this[i] == needle) return true;
       }
       return false;
    }
    function btn1() {
        if (libary.contains("Big Book")){
        libary.splice("Big Book");
        document.getElementById("1").style.cssText = "border: 0;border-radius:0;border-color:0;box-shadow:0;}";
        }else{
        libary.push("Big Book");
        document.getElementById("1").style.cssText = "border: 5px solid #4099FF;border-radius: 12px;outline: none;border-color: #4099FF;box-shadow: 0 0 15px #4099FF;}";
        }
    };
   function btn2() {
    if (libary.contains("Small Book")){
    libary.splice("Small Book");
    document.getElementById("2").style.cssText = "border: 0;border-radius:0;border-color:0;box-shadow:0;}";
    }else{
    libary.push("Small Book");
  document.getElementById("2").style.cssText = "border: 5px solid #4099FF;border-radius: 12px;outline: none;border-color: #4099FF;box-shadow: 0 0 15px #4099FF;}";
  }
};

请记住,这只是一个示例,大约还有20多个按钮。

如这里所解释的,splice()方法需要两个必需的参数来删除元素,即从哪里开始的"index"和要删除的项目的"number"。你可以试着像这样调用splice()方法

...
var index = library.indexOf("Big Book");
libary.splice(index, 1);
...

通过这种方式,您只删除指定索引处的一个元素。

这里有一个JSFiddle代码,它可以随心所欲地运行,它还可以在每次单击时将数组记录到控制台,这样您就可以看到结果。