Problem
You want to find occurrences of a given value in an array, and either remove the element or replace with another value.
Solution
Use the Array indexOf() and splice() to find and remove/replace array elements:
var animals = new Array("dog","cat","seal","walrus","lion", "cat");
// remove the element from array
animals.splice(animals.indexOf("walrus"),1); // dog,cat,seal,lion,cat
// splice in new element
animals.splice(animals.lastIndexOf("cat"),1,"monkey");
// dog,cat,seal,lion,monkey
console.log(animals.toString());
EXPLAIN
The splice() method takes three parameters: the first parameter is required, as it’s the index where the splicing is to take place; the second, optional parameter is the numberof elements to remove; the third parameter, also optional, is a set of the replacement elements (if any). If the index is negative, the elements will be spliced from the end rather than the beginning of the array:
var animals = ["cat","walrus","lion", "cat"]; // splice in new element animals.splice(-1,1,"monkey"); // cat,walrus,lion,monkey
If the number of elements to splice is not provided, all elements from the index to the end will be removed:
var animals = ["cat","walrus","lion", "cat"]; // remove all elements after second animals.splice(2); // cat,walrus
The last parameter, the replaced value, can be a set of replacement elements, separated by commas:
var animals = ["cat","walrus","lion", "cat"]; // replace second element with two animals.splice(2,1,"zebra","elephant"); // cat,walrus,zebra,elephant,cat
Removing or replacing one element is handy, but being able to remove or replace all instances of a particular element is even handier. In Example 2-1, an array is created with several elements, including multiple instances of a specific value. The splice() method is used in a loop to replace all of the elements with a given value. The splice() method is used again, in a separate loop, to remove the newly spliced elements.
Using looping and splice to replace and remove elements
var charSets = ["ab","bb","cd","ab","cc","ab","dd","ab"];
// replace element
while (charSets.indexOf("ab") != -1) {
charSets.splice(charSets.indexOf("ab"),1,"**");
}
// ["**", "bb", "cd", "**", "cc", "**", "dd", "**"]
console.log(charSets);
// delete new element
while(charSets.indexOf("**") != -1) {
charSets.splice(charSets.indexOf("**"),1);
}
console.log(charSets); // ["bb", "cd", "cc", "dd"]

No comments:
Post a Comment