如何从用户制作的数组中专门拼接出一个项目?

时间:2016-03-30 06:18:29

标签: javascript arrays function array-splice

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

我知道它是我的拼接,它可能只是因为凌晨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个按钮。

1 个答案:

答案 0 :(得分:1)

正如here所解释的那样,splice()方法需要2个必需参数才能删除元素," index"从哪里开始和"数字"要删除的项目。 您可以尝试像这样调用splice()方法

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

这样,您只删除指定索引处的一个元素。

这里有一个JSFiddle代码,可以按照您的意愿运行,它还会在每次点击时将数组记录到控制台,以便您查看结果。