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

问题描述 投票:3回答:2

我有一个数组,如果我删除一个特定的元素,它将删除它,但后来,如果我再次删除另一个元素,新选择的元素将被删除但先前删除的元素将存在,如图所示。 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);

UPDATE

实际要求

enter image description here

我的要求是我需要移动数据反之亦然移动我也想从数组中删除它现在我只能附加这些值,但我无法从数组中删除它

第1列html

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

第1列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);
   }
javascript jquery arrays
2个回答
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);

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);
© www.soinside.com 2019 - 2024. All rights reserved.