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
Fondamentali di jQuery
477% JQuery
jQuery stà diventando rapidamente uno strumento che ogni sviluppatore web di interfacce dovrebbe conoscere. Lo scopo di questo libro è di fornire una panoramica della biblioteca, in modo che qu…
Python per tutti
250% Python
Python para todos è un libro sulla programmazione in Python. Questo è un tutoriale su Python adatto a tutti i livelli e si può scaricare in pdf gratuitamente in spagnolo. Il tutoriale di Python…
Modello di spazi dei nomi in JavaScript
114% 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…
Funzioni popolari per gestire le stringhe
80% Php
PHP ha una vasta scelta di funzioni integrate per la gestione delle stringhe che permettono di manipolarle facilmente in quasi ogni modo possibile. Tuttavia, imparare tutte queste funzioni, ricordando quello che fanno e qu…
Guida allo Zend Framework
76% Zend
Zend Framework è un framework open source per PHP. Zend Framework separa la logica e le azioni usando il pattern MVC (Model View Controller). Cosa è lo Zend Framework? Framework per la costruzione di siti web più veloci e …