Speed up flattenArguments()

This commit is contained in:
Dan Stillman 2013-05-01 18:23:09 -04:00
parent 35f1720b08
commit 9e8559b4be

View file

@ -1435,28 +1435,26 @@ Components.utils.import("resource://gre/modules/Services.jsm");
* values and/or an arbitrary number of individual values
*/
function flattenArguments(args){
var isArguments = args.callee && args.length;
// Put passed scalar values into an array
if (args === null || (args.constructor.name != 'Array' && !isArguments)) {
if (args === null || typeof args == 'string' || typeof args.length == 'undefined') {
args = [args];
}
var returns = [];
for (var i=0; i<args.length; i++){
if (!args[i] && args[i] !== 0) {
var arg = args[i];
if (!arg && arg !== 0) {
continue;
}
if (args[i].constructor.name == 'Array') {
for (var j=0; j<args[i].length; j++){
returns.push(args[i][j]);
if (Array.isArray(arg)) {
for (var j=0; j<arg.length; j++){
returns.push(arg[j]);
}
}
else {
returns.push(args[i]);
returns.push(arg);
}
}
return returns;
}