экранирования в

ли функция js для преобразования массива в urlencoded? Я новичок и JS ... спасибо! ...

мой массив является массивом ключей и значений .... так,

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

такой же как

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

есть ли решение?

о, извини ... у меня есть такой массив

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

тогда мне нужно преобразовать массив в:

id=354313&fname=Henry&lname=Ford
 Victor Nicollet11 янв. 2011 г., 10:47
URL-кодирование применяется только к строкам. Если вы хотите применить его к массиву, вам сначала нужно объяснить, что вы подразумеваете под этим - хотите ли вы объединить массив в одну строку? Вы хотите кодировать отдельные элементы массива? Как вы относитесь к элементам нестроковых массивов (таких как объекты, функции или другие массивы)? Было бы неплохо отредактировать ваш вопрос, включив в него хотя бы один пример того, чего вы хотите достичь (исходный массив, результирующая строка в кодировке URL).
 jerluc11 янв. 2011 г., 10:43
Вы говорите о URL, кодирующем каждую строку в массиве или объединяющем их в строку запроса URL или ...?

Ответы на вопрос(6)

можете использовать $ .param (). ПроверьтеВот , Пример использования

var myData = {'id' : '354313', 'fname' : 'Henry', 'lname' : 'Ford'};
var url = "https://stackoverflow.com?" + $.param(myData);

Выход

https://stackoverflow.com?id=354313&fname=Henry&lname=Ford

Также работает с массивом объектов (например, изJQuery (форма) .serializeArray ()):

var myData = [{'id' : '354313'}, {'fname' : 'Henry'},{'lname' : 'Ford'}];
Решение Вопроса

Вы можете сделать что-то вроде этого:

var myData = new Array('id=354313', 'fname=Henry', 'lname=Ford');
var url = myData.join('&');
 earthmeLon02 янв. 2014 г., 18:06
Я бы пошел сvar url = '?' + myData.join('&');

вы можете сделать это (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));

Попробуй это:

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

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

out.join('&');

Для объяснения того, почему использоватьhasOwnProperty, Взгляни наэтот ответ на вопрос «Как пройти через цикл или перечислить объект JavaScript?».

 Elia Weiss29 сент. 2014 г., 13:42
Это лучше сделать: out.push (key + '=' + encodeURIComponent (arr [key]));

если вы хотите расширить функциональность массива

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

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

    return out.join('&');
}

Или если вы хотите автономную функцию

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

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

    return out.join('&');
}

Ваш ответ на вопрос