Thursday, May 23, 2024
 Popular · Latest · Hot · Upcoming
168
rated 0 times [  170] [ 2]  / answers: 1 / hits: 30125  / 13 Years ago, wed, february 15, 2012, 12:00:00

I am trying to make a removeAll() function, which will remove all elements of an array with that particular value (not index).



The tricky part comes when we make any change to the loop, the indexes tend to move around (making it very hard to make it work like we want) and, restarting the loop every time we make changes is very inefficient on big arrays.



So far, I wrote my own arr.indexOf function (for older IE support), it looks like this:



function arrFind(val, arr) {
for (var i = 0, len = arr.length, rtn = -1; i < len; i++) {
if (arr[i] === val) {
return i;
}
}
return -1;
}


It is easy to remove elements like this:



var myarray = [0, 1, 2, 3, 4];
var tofind = 2;

var stored_index = arrFind(tofind, myarray);
if (stored_index != -1) {
myarray.splice(stored_index, 1);
}

alert(myarray.join(,)); //0,1,3,4


However, as I pointed out earlier, when doing this while looping, we get in trouble.



Any ideas on how to properly remove array items while looping through it?


More From » arrays

 Answers
10

Loop in reverse order or build a new array with the items that are not to be removed.


[#87454] Tuesday, February 14, 2012, 13 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
marinalyssak

Total Points: 637
Total Questions: 101
Total Answers: 94

Location: Morocco
Member since Fri, May 22, 2020
4 Years ago
;