title: Splice removes more than one index
body: <p>I am making my own filter system for filtering data, and I'm building the basic functionality now, such as adding and removing filters.</p>
  
  <p>Adding filters works fine, but when I play around with adding and removing, sometimes <code>splice</code> removes more than one filter. Why is it doing that? here is my code:</p>
  
  <pre><code>    var active_filters = [];
  
      var available_filters = [
          'first_name', 'last_name', 'city'
      ];
  
      var filters = {
          first_name: {
              title: 'First Name',
              is_active: false,
              types: [
                  {
                      input: 'text'
                  },
  
                  {
                      input: 'select',
                      options: [
                          'asc', 'desc'
                      ],
                      values: [
                          'Ascending', 'Descending'
                      ]
                  }
              ],
  
          },
  
          last_name: {
              title: 'Last Name',
              is_active: false,
              types: [
                  {
                      input: 'text'
                  },
  
                  {
                      input: 'select',
                      options: [
                          'asc', 'desc'
                      ],
                      values: [
                          'Ascending', 'Descending'
                      ]
                  }
              ],
  
          },
  
          city: {
              title: 'City',
              is_active: false,
              types: [
                  {
                      input: 'text'
                  },
              ],
  
          },
      };
  
      var id_filters = $("#filters");
  
      $(document).ready(function () {
          id_filters.html(template_filters(filters));
      });
  
      function template_filters(filters) {
          var html = '&lt;select class="select_filters" id="select_filters" onchange="add_filter();"&gt;';
  
          html += '&lt;option value="0"&gt;Select Filter&lt;/option&gt;';
  
          for (var property in filters)
          {
              if (filters.hasOwnProperty(property))
              {
                  var title = filters[property].title;
                  var is_active = filters[property].is_active;
                  var types = filters[property].types;
  
                  html += '&lt;option value="'+property+'"&gt;'+title+'&lt;/option&gt;';
              }
          }
  
          html += '&lt;/select&gt;';
  
          return html;
      }
  
      function template_show_filter(filter, filter_name)
      {
          var html = '&lt;div id="filter-'+filter_name+'" class="div_filter"&gt;';
  
          html += '&lt;span&gt;'+filter.title+' &lt;a href="javascript:void(0)" onclick="remove_filter(\''+filter_name+'\')"&gt;X&lt;/a&gt;&lt;/span&gt;';
  
          html += '&lt;/div&gt;';
          return html;
      }
  
      function add_filter()
      {
          var select_filters = $("#select_filters");
          var selected_filter = select_filters.val();
  
          if (selected_filter != 0)
          {
              if (active_filters.length == 0)
              {
                  active_filters.push(selected_filter);
                  id_filters.append(template_show_filter(filters[selected_filter], selected_filter));
              }
              else
              {
                  if (active_filters.indexOf(selected_filter) === -1)
                  {
                      active_filters.push(selected_filter);
                      id_filters.append(template_show_filter(filters[selected_filter], selected_filter));
                  }
              }
  
  
          }
      }
  
      function remove_filter(filter_name)
      {
          var index = active_filters.indexOf(filter_name);
  
  
  
          if (index &gt;= 0)
          {
              var id = $("#filter-"+filter_name);
              id.remove();
  
              active_filters.splice(index); // here, it removes more than one
          }
      }
  </code></pre>