javascriptarraysmove

How do I move an element from an array to another array in javascript?


My code is like

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();
    });
}

Maybe this is the wrong way to do it? I should be using a class instead, but isn't that for DOM items?


Solution

  • I find it handy to have things like

    function removeIf(arr, predicate) {
    
        for (var i = 0; i < arr.length; i++) {
            if (predicate(arr[i])) {
                arr.splice(i--, 1);
            }
        }
    }
    

    So then:

    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();
        });
    }