2011-11-30 27 views
11

Mam funkcję o nazwie insert, która pobiera dwa parametry (name, telnumber).Javascript: Dodawanie do tablicy asocjacyjnej

Po wywołaniu tej funkcji chcę dodać do tablicy asocjacyjnej.

Tak na przykład, kiedy należy wykonać następujące czynności:

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

chcę tak być przechowywane tak:

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

"tablice asocjacyjne" to po prostu obiekty w JavaScript. – zzzzBov

+2

Pod względem technicznym masz na myśli dodawanie obiektów do tablicy, która jest indeksowana numerycznie. JavaScript nie ma tablic asocjacyjnych. –

+1

@Michael Tak, to jest poprawne. – ritch

Odpowiedz

27

Coś jak to powinno załatwić sprawę:

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

Można wskazać, że OP jest * nie * przy użyciu tablicy asocjacyjnej; on używa tablicy obiektów. –

4
var users = []; 

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

Założę się, że jesteś stosując pewne odniesienia tablicy z 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

Nie ma taki termin jak „asocjacyjnej” w JS, choć można użyć następujących:

var list = []; 

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

Proponuję [przeczytanie tego] (http://www.pageresource.com/jscript/jarray2.htm) – Leon

+0

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

+2

"obiekty jako tablice asocjacyjne" nie oznacza że JS ma "tablice asocjacyjne". wszystko jest obiektem w JS i możesz dodać właściwości do czegokolwiek, ale nie czyni tych obiektów tablicami asocjacyjnymi. btw, który zniósł moją odpowiedź? :)))))))))) jest zabawny: D – ioseb

4

Czy używać coś takiego;

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

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

Nie sądzę, należy spróbować zanalizować numer telefonu jako liczba całkowita, gdyż może ona zawierać biało-spacje, znaki plus (+) i może nawet zacząć od zera (0).

+0

Dobra uwaga o parseInt, właśnie widziałem "Numer" - nie myślałem o kontekście :-) – jabclab

+0

Po prostu zauważony, 'kontaktami' var powyżej powinno być' [] 'nie' {} '. – jabclab

+0

Dzięki, edytowałem mój post – Stefan

2

Jeśli chcesz, możesz dodać swoją funkcję do Array.prototype.

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

I używać go w ten sposób.

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

[ 
    0: {"John":"999"}, 
    1: {"Adam":"5433"}, 
    2: {"yowza":"1"} 
] 
Powiązane problemy