与第二个数组

时间:2017-03-17 10:10:37

标签: javascript jquery arrays

我正在尝试创建一种在两个方框之间移动项目的方法。

我在左框中填写了项目。单击某个项目时,它会移动到右侧框。

我可以在左侧框中填写几个我可以移动的项目。

如果我已经从左侧移动了一个项目,我不应该在左侧框中看到该项目。

要做到这一点。我从左框数组中创建了一个removeDuplicate()。

但是我有一个错误,即使我把它放在右边的盒子里,也会让一个物品在左侧盒子上出现。

我做了一个JSFiddle来证明这个问题。

如果您点击Item_01中的三个项目,则从Item_02中选择三个项目。这使得右侧框中有六个项目。如果你回到Items_01。您之前选择的三个项目现在不应该在lefyt框中。但正如你所看到的,其中三个仍在那里。

所以我的removeDuplicate()不起作用。我无法弄清楚原因。

我真的需要帮助。

My -jsfiddle

function removeDuplicates() {
//alert("klick");
    for(var i=0; i < arrItems.length; i++) {
        for(var j=0; j < arrSelectedItems.length; j++) {
            if(JSON.stringify(arrItems[i])  == JSON.stringify(arrSelectedItems[j])) {
                arrItems.splice(i, 1);
            }
        }
    }

}

对此问题的建议的回应与另一个问题相同。 这不一样,因为我不想创建一个新数组。我想删除现有数组中的重复项。

2 个答案:

答案 0 :(得分:0)

你可以尝试像这样更新你的removeDuplicate函数

NumberPicker

要删除数组中的项目,您应该从最后开始。 我已更新了您的JSFiddle

答案 1 :(得分:0)

我的建议是使用underscore.js库:

var _ = require('underscore')

var left = [1,2,3,4,5]
var right = [2,5,6,7]

left = _.difference(left, right)

console.log('left', left) // left [ 1, 3, 4 ]   
console.log('right', right) // right [ 2, 5, 6, 7 ]