Empty an Array
This is one of the fastest and easiest ways of emptying an array. Of course there are may other ways, but those usually include creation of a new array. This way you reuse the same array.
var myArray = ["one", "two", "three"];
// console.log( myArray ) => ["one", "two", "three"]
myArray.length = 0;
// console.log( myArray ) => []
isnt:
myArray = [];
just as good?
Not if you have references to the array lying around..
I bet this:
myArray.length = 0;does not work in all browsers where the snippet provided above – does.
Excellent code, myArray.empty() works as well.
it’s not a standard prototype on the Array constructor.
Atleast not in the latest WebKit browsers.
not really-doesnt work in some browsers
myArray=[]; is excellent
Ha, just do:
arrayobj.splice(0,arrayobj.length).You can even add that to a prototype as
Array.prototype.empty() {this.splice(0,this.length);}
and you are done.
I think:
myArray = [];
/* or */
myArray = new Array();
Would be the best, since it’s cross-browser stuff.
The problem with myArray = [] and myArray = new Array() is that technically you are not emptying the array, but instead you are creating a new array. Creating new arrays is a bit of work for browsers, so simply setting the array’s length to 0 is probably best.
none of the examples works
Out of the above I’ve only tested emptying an array through splicing and it did work perfectly.
Here’s a jsPerf test case: http://jsperf.com/emptying-arrays
Old thread but here are my two cents:
As the above jsPerf test case shows, creating a new array is FASTER than setting length to 0. The reason for this is that most of the built-in functions and constructors for JS nowadays tend to use native code under the surface to optimize (thanks in no small part to Javascript becoming so popular). This is at least the case in Chrome although I can’t vouch for other browsers.
In short stick to creating new arrays – old tricks like this aren’t really necessary any more.
P.S. Splicing is the worst by far: http://jsperf.com/emptying-arrays/4
Still there is a flaw in both of your methods.
A simple example is try with
var a = ["one","two","three"];
a = [];
a = new Array();
var a = ["four","five","six"];
a.join(‘*’);
console.log(a); // Now we expect the out as four*five*six.
But, output will be ***four*five*six. Which is never a correct procedure. I am looking for a perfect solution, which works on all browsers. Please, let me know if any one of you have one.