Vorrei postare un paio di frammenti di codice che ho in giro qui da un po’. Forse gli intenditori sbadiglieranno, ma ci sono un sacco di persone che sono alla ricerca di queste minuzie. Mi sbarazzo di questi appunti che ho scritto ultimamente e lo pubblico qui per reperirlo con un click.
Vedrete frammenti che aiutano a:

  1. rilevare se una variabile è un array reale con isArray;
  2. convertire in un array vero e proprio con arguments to Array;
  3. imitare x = [3 .. 25] genere di cose che offrono altri linguaggi con [x..y];
  4. spaziare la lunghezza una stringa con caratteri predefiniti con padding;
  5. creare una funzione unique per gli array con array.unique().
Tricks
isArray()
Ci sono un sacco di modi per verificare la presenza di una variabile di tipo array, ma la più sicura e anche più promossa è
Object.prototype.toString.call(arg) == '[object Array]';
Alcuni esempi che demostrano bene nella console come usarli e come funziona davvero.
arr = 1 // Questo è un intero, naturalmente.
Object.prototype.toString.call(arr) == '[object Array]';
false
arr = '1' // Solo una stringa.
Object.prototype.toString.call(arr) == '[object Array]';
false
arr = '[1,2,3]' // Anche qui una stringa.
Object.prototype.toString.call(arr) == '[object Array]';
false
arr = {x:1, y:2} // Questo è un oggetto e non un array
Object.prototype.toString.call(arr) == '[object Array]';
false
arr = [1,2,3] // Un array e quindi dovrebbe essere vero.
Object.prototype.toString.call(arr) == '[object Array]';
true
Conversione di argomenti per un array
Uno dei disaggi che gli sviluppatori in JavaScript devono affrontare e che si spera sia risolto con le versioni future (per fortuna) è che l’argomento object si presenta come un array e ha la proprietà length, ma non si può lavorare con essa come se fosse un array, ad esempio qui:
function f() { 
   console.log(arguments.length); 
}
f(1,2,3);
//ritorna 3,  arguments.length lavora
function f() { 
   console.log(arguments.slice()); 
}
f(1,2);
// ritorna TypeError: arguments.slice non è una funzione 
// slice() non è disponibile
Ma la loro è una soluzione fino a quando il linguaggio che lo gestisce. è
function f() { 
   var realArray = [].slice.call(arguments, 0);
   console.log(realArray.slice());
}
f(1,2,3);
// ritorna [1, 2, 3] 
// slice non lancia nessun errore
Funzione intervallo
A volte si necessita di un array piatto con una serie di numeri di una certa fascia, per esempio quella di un insieme di caratteri, con tutti i caratteri maiuscoli. Ma non existe ancora in JavaScript “x = [1 .. 5]”. Ma avevo bisogno di uno, ed è facile fare uno, come si può vedere:
var chars = [];
for (var i = 65; chars.push(i) && i < 90; i++){};
// creo un array con questi elementi
// [65, 66, 67, ... 88, 89, 90]
// per verificarlo nella console
chars.forEach(function(c){
   console.log(String.fromCharCode(c)) 
});
// si ottiene A B C ... X Y Z
Ma se si tratta di qualunque insieme di numeri possiamo ottenerlo con una piccola modifica per trattare l’argomento passato alla funzione.
function insieme(input) {
    var parti = input.split('..'),
        inizio = +parts[0],
        finale = +parts[1],
        counter = inizio,
        output = [];
    for (; output.push(counter) && counter < finale; counter++);
    return output;
}
insieme('9..55'); 
// [9, 10, 11, 12, 13, 14, 15]
Quindi per avere qualcosa di simile a “x = [1 .. 5]” si può usare “x = insieme('1..5');
Riempimento di una stringa
A volte si desidera un numero con dei zeri a sinistra. Ecco come viene fatto:
('00' + 3).slice(-3)
// "003"
('00' + 42).slice(-3)
// "042"
('00' + 103).slice(-3)
// "103"
Il -3 è la posizione a ritroso della stringa di caratteri. Si aggiungono due zeri all’inizio, perché siamo sicuri che un numero non è mai una stringa vuota. E dopo la concatenazione di stringhe si prendono solo gli ultimi tre caratteri. Semplice e funziona bene senza alcun tipo di if o di una logica complessa.
array.unique()
PHP ha un sacco di funzioni infernali per gli array, anche se un po selvatiche. Una funzione come unique() di PHP è una di quelle a volte mancano in Javascript.Ecco una semplice:
function unique(arrayData){
   return arrayData.filter(function(val, idx, arr){
      return arr.slice(0, idx).indexOf(val)==-1;
   });
}
unique([1,2,3,4,1,2,1,3])
// ritorna [1, 2, 3, 4]
unique([1,2,3,4,1,2,1,3,5])
// ritorna [1, 2, 3, 4, 5]
unique(['a', 'a', 'b', 'B'])
// ritorna ["a", "b", "B"]
Divertiti, e spero che utile.
Similari
OOPjs: Oggetti, incapsulamento e astrazione
13% JScript
Un post veloce per quanto riguarda i concetti più importanti e frequenti dello JavaScript avanzato o che possiamo dire Object Oriented Programming JavaScript. Gli oggetti sono dei concetti chiave di JavaScript. Iniziamo ra…
Modello di spazi dei nomi in JavaScript
10% JScript
In questo post, si discuteranno dei modelli intermedi, avanzati e gli approcci per il namespacing in JavaScript. Si comincia con l’ultimo come credo che molti dei lettori abbia qualche precedente esperienza in questo setto…
Gestire le date in italiano con PHP
9% Php
Usare la funzione date() per manipolare le date con il formato convenzionale è più che sufficente. Quando si tratta, però, di gestire le date in un’altro linguaggio che non sia l’inglese (l’italiano per esempio), comincia …
ECMAScript modalità Strict
8% JScript
ECMAScript, che è sostenuta dall’Ecma International come garanzia per l’adozione su tutta la linea, è lo standard di quello che la maggior parte delle persone conoscono come JavaScript. A rigor di termini (ma non volendo e…
Come rimuovere i caratteri No ASCII da una stringa
8% Php
In un lavoro che sto’ facendo, un cliente mi fornisce i suoi aggiornamenti attraverso un file in formato csv estratto dall’applicazione Excel della Microsoft. Ora ottenere i dati che servono da questo file prodotto da M$ n…