2011-01-11 10 views
8

Czy istnieje jakaś funkcja js do konwersji tablicy na kod skrócony? Jestem zupełnie początkujących n JS ... dzięki! ...Tablica JavaScript na adres URL kodowany


moja tablica jest kluczowym tablica & wartość .... tak,

myData=new Array('id'=>'354313','fname'=>'Henry','lname'=>'Ford'); 

jest taka sama jak

myData['id']='354313'; 
myData['fname']='Henry'; 
myData['lname']='Ford'; 
myData.join('&'); //returns error, it doesn't work on such array... 

Czy istnieje jakieś rozwiązanie?


oh sory ... Mam tablicę jak ten

var myData=new Array('id'=>'354313','fname'=>'Henry','lname'=>'Ford'); 

potem muszę tablica przekształca się być:

id=354313&fname=Henry&lname=Ford 
+0

Mówisz o URL kodowania każdej ciąg w tablicy lub łącząc je w ciągu kwerendy URL lub .. ? – jerluc

+0

Kodowanie adresu URL jest stosowane tylko do ciągów. Jeśli chcesz zastosować go do tablicy, najpierw musisz wyjaśnić, co masz na myśli - chcesz złączyć tablicę w jeden ciąg znaków? Czy chcesz kodować poszczególne elementy tablicy? Jak traktować elementy tablicy nie będące ciągami znaków (takie jak obiekty, funkcje lub inne tablice)? Dobrym pomysłem byłoby zmodyfikowanie twojego pytania tak, aby zawierało przynajmniej jeden przykład tego, co chcesz osiągnąć (oryginalna tablica, wynikowy kod zakodowany w url). –

Odpowiedz

9

można zrobić coś takiego:

var myData = new Array('id=354313', 'fname=Henry', 'lname=Ford'); 
var url = myData.join('&'); 
+1

Poszedłbym z 'var url = '?' + myData.join ('&'); ' – earthmeLon

17

Spróbuj tego:

Zrobione z jgrunds
var myData = {'id': '354313', 'fname':'Henry', 'lname': 'Ford'}; 
var out = []; 

for (var key in myData) { 
    out.push(key + '=' + encodeURIComponent(myData[key])); 
} 

out.join('&'); 
+2

Lepiej zrobić: out.push (key +' = '+ encodeURIComponent (arr [key])); –

1

odpowiedzieć, jeśli chcesz rozszerzyć funkcjonalność tablicę

Array.prototype.toQueryString = function(){ 
    var out = new Array(); 

    for(key in this){ 
     out.push(key + '=' + encodeURIComponent(this[key])); 
    } 

    return out.join('&'); 
} 

lub jeśli chcesz autonomiczną funkcję

function arrayToQueryString(array_in){ 
    var out = new Array(); 

    for(var key in array_in){ 
     out.push(key + '=' + encodeURIComponent(array_in[key])); 
    } 

    return out.join('&'); 
} 
1

Jeśli używasz obiekt zamiast tablicy można zrobić (ES6):

var myData = { 
    id: 354313, 
    fname: 'Henry', 
    lname: 'Ford', 
    url: 'https://es.wikipedia.org/wiki/Henry_Ford', 
}; 

encodeDataToURL = (data) => { 
    return Object 
     .keys(data) 
     .map(value => `${value}=${encodeURIComponent(data[value])}`) 
     .join('&'); 
} 

console.log(encodeDataToURL(myData));