Как перенести элемент из массива в другой массив в javascript?

Мой код похож на

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

Возможно, это неправильный способ сделать это? Я должен использовать класс вместо этого, но не для элементов DOM?

2 ответа

Мне удобно иметь такие вещи, как

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

Итак, тогда:

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


Используйте splice (index, range) для удаления элементов из массива.

licensed under cc by-sa 3.0 with attribution.