在javascript中,如何将元素从一个数组移动到另一个数组?

在javascript中,如何将元素从一个数组移动到另一个数组?,javascript,arrays,move,Javascript,Arrays,Move,我的代码是 var shapes1 = [ r.image("node.gif",190, 100, 47, 45)]; var shapes2 =[]; for (var i = 0, ii = shapes1.length; i < ii; i++) { shapes1[i].mousedown(function(e){ var temp=this.clone(); shapes1.push(temp); //now I wan

我的代码是

var shapes1 = [  r.image("node.gif",190, 100, 47, 45)];
var shapes2 =[];
for (var i = 0, ii = shapes1.length; i < ii; i++) {
    shapes1[i].mousedown(function(e){
        var temp=this.clone();
        shapes1.push(temp);
        //now I want to remove "this" from shapes1
        //and put it into shape2
        //HOW??
        isDrag=true;
        e.preventDefault();
    });
}
var shapes1=[r.image(“node.gif”,19010047,45)];
var shapes2=[];
对于(变量i=0,ii=shapes1.length;i

也许这是错误的做法?我应该改为使用类,但这不是用于DOM项的吗?

使用splice(索引,范围)从数组中删除项。

我发现这样做很方便

function removeIf(arr, predicate) {

    for (var i = 0; i < arr.length; i++) {
        if (predicate(arr[i])) {
            arr.splice(i--, 1);
        }
    }
}
函数removeIf(arr,谓词){
对于(变量i=0;i
那么:

var shapes1 = [  r.image("node.gif",190, 100, 47, 45)];
var shapes2 =[];
for (var i = 0, ii = shapes1.length; i < ii; i++) {
    shapes1[i].mousedown(function(e){
        var temp=this.clone();
        shapes1.push(temp);

        removeIf(shapes1, function (item) { return item === this; });

        shapes2.push(this);

        isDrag=true;
        e.preventDefault();
    });
}
var shapes1=[r.image(“node.gif”,19010047,45)];
var shapes2=[];
对于(变量i=0,ii=shapes1.length;i
也许你应该描述一下你到底想做什么。没问题。传递一个函数来测试每个项的好处是,您可以使用它根据您想要的任何“查询”删除多个项,例如,它可以是
item.firstName.length>item.lastName.length
而不是
firstName
长于
lastName
(好吧,这只是一个愚蠢的例子,但你看它有多强大)。