从数组中删除特定元素会导致问题

时间:2019-02-19 10:15:35

标签: javascript jquery arrays

我有一个数组,如果我删除一个特定的元素,它将删除它,但是稍后,如果我再次删除另一个元素,新选择的元素将被删除,但是以前删除的元素将会出现,如图5所示。 enter image description here

首先参考上面的图片,我从阵列中删除了电话,然后我删除了已禁用帐户,但在第二张表中,先前删除的元素电话 >仍然存在

var selectedOpts = $('#lstBox1 option:selected');

var text = selectedOpts.val();

var colData = [];

this.firmData.forEach(function (dta) {
    colData.push(dta.DisplayName);
})

const removeItem = value => colData.filter(item => item !== value)
    console.table(removeItem(text))
    console.log(text);

更新

实际要求

enter image description here

我的要求是我需要在移动时反过来移动数据,我也想从数组中删除它,因为现在我只能附加这些值,但不能从数组中删除它

  

第一列html

<div class="menu">
    <select multiple="multiple" id='lstBox1' >
    </select>
</div>
  

第一列JS代码

 self.firmData.forEach(function (data) {                  
   $("#lstBox1").append($('<option class="items">').text(data.DisplayName).attr('value', data.DisplayName));                        
  });
  

第二列HTMl

<div class="menu">
    <select multiple="multiple" id='lstBox2' >
    </select>
</div>
  

第二列JS代码

self.data.forEach(function (data) {
 $("#lstBox2").append($('<option class="items">').text(data.columnsexpo).attr('value', data.columnsexpo));
 });
  

按钮功能

 "click #btnRight": function(e){
      var selectedOpts = $('#lstBox1 option:selected');
      var text = selectedOpts.val();

      $('#lstBox2').append($(selectedOpts).clone())
      this.data.push(columnsexpo: text);
   }

  "click #btnLeft": function(e){
      var selectedOpts = $('#lstBox2 option:selected');
      var text = selectedOpts.val();

      $('#lstBox1').append($(selectedOpts).clone())
      this.data.push(columnsexpo: text);
   }

2 个答案:

答案 0 :(得分:2)

从问题中不确定您要做什么,但这应该从原始数组中删除所需的项。警告-可能包含错误/错误,但是Array.prototype.splice会从数组中删除项目。

var selectedOpts = $('#lstBox1 option:selected');

var text = selectedOpts.val();

var colData = [];

this.firmData.forEach(function (dta) {
    colData.push(dta.DisplayName);
})

function findItem(item) {
  return item == text;
}

colData.splice(colData.findIndex(findItem), 1);
console.table(colData)
console.log(text);

答案 1 :(得分:0)

.filter请勿从数组中删除项目

要删除数组中的项目,您可以

colData.splice(colData.indexOf(text), 1)

实时演示

var colData = ['a', 'b', 'c', 'd'];

const removeItem = value => {
  let arr = colData.splice(colData.indexOf(value), 1);
  return arr;
}

removeItem('a');
removeItem('d');

console.log(colData);