2011-11-30 2 views
11

Ho una funzione chiamata insert che accetta due parametri (nome, telnumber).Javascript: aggiunta a un array associativo

Quando chiamo questa funzione voglio aggiungere a un array associativo.

Così, per esempio, quando faccio la seguente:

insert("John", "999"); 
insert("Adam", "5433"); 

voglio così essere conservato in questo modo:

[0] 
{ 
name: John, number: 999 
} 
[1] 
{ 
name: Adam, number: 5433 
} 
+4

"array associativi" sono solo oggetti in JavaScript. – zzzzBov

+2

Tecnicamente, vuoi dire che vuoi aggiungere oggetti a un array che è indicizzato numericamente. JavaScript non ha matrici "associative". –

+1

@ Michael Sì, è corretto. – ritch

risposta

27

Qualcosa di simile dovrebbe fare il trucco:

var arr = []; 
function insert(name, number) { 
    arr.push({ 
     name: name, 
     number: number 
    });   
} 
+5

Si potrebbe indicare che OP * non * si utilizza un array associativo; sta usando una serie di oggetti. –

4
var users = []; 

users.push({name: "John", number: "999"}); 
users.push({name: "Adam", number: "5433"}); 
1

Suppongo che tu sia utilizzando qualche riferimento array con insert:

var arr; 
function insert(na, nu) { 
    nu = Number(nu) || 0; 
    //alternatively 
    nu = parseInt(nu, 10); 
    arr.push({ name: na, number: nu }); 
} 
arr = []; 


insert("John", "999"); 
insert("Adam", "5433"); 
-1

Non esiste termine come un "array associativo" in JS, anche se è possibile utilizzare i seguenti:

var list = []; 

function insert(name, number) { 
    list.push({ 
    name: name, 
    number: number 
    }); 
} 
+1

Suggerirei [leggendo questo] (http://www.pageresource.com/jscript/jarray2.htm) – Leon

+0

eh? ecco [un altro da MS] (http://msdn.microsoft.com/en-us/library/windows/apps/5kh4af6c (v = vs.85) .aspx) – Leon

+2

"oggetti come array associativi" non significa che JS ha "array associativi". tutto è un oggetto in JS e puoi aggiungere proprietà a qualsiasi cosa ma non rende questi oggetti array associativi. btw chi ha downvoted la mia risposta? :)))))))))) è divertente: D – ioseb

4

userebbe qualcosa di simile;

var contacts = []; 
var addContact = function(name, phone) { 
    contacts.push({ name: name, phone: phone }); 
}; 

// usage 
addContact('John', '999'); 
addContact('Adam', '5433'); 

Non penso si dovrebbe cercare di analizzare il numero di telefono come un intero come potrebbe contenere white-spazi, segni più (+) e forse anche iniziare con uno zero (0).

+0

Un buon punto sul parseInt, ho appena visto "Number" - non ho pensato al contesto :-) – jabclab

+0

Appena individuato, la 'contatti' var sopra dovrebbe essere' [] 'not' {} '. – jabclab

+0

Grazie, ho modificato il mio post – Stefan

2

Se si desidera è possibile aggiungere la propria funzione a Array.prototype.

Array.prototype.insert = function(key, val) { 
    var obj = {}; 
    obj[ key ] = val; 
    this.push(obj); 
    return this; 
}; 

E usarlo in questo modo.

var my_array = [].insert("John", "999") 
       .insert("Adam", "5433") 
       .insert("yowza", "1"); 

[ 
    0: {"John":"999"}, 
    1: {"Adam":"5433"}, 
    2: {"yowza":"1"} 
]