Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   нужен аналог (https://javascript.ru/forum/misc/30181-nuzhen-analog.html)

z700i 27.07.2012 00:21

нужен аналог
 
Нужен JS аналог PHP кода
function params($params) {
    $pice = array();
    foreach($params as $k=>$v) {
        $pice[] = $k.'='.urlencode($v);
    }
    return implode('&',$pice);
}​​​​​​

Gvozd 27.07.2012 00:39

Как напишешь, скинь и сюда, пожалуйста

Aetae 27.07.2012 01:06

http://javascript.ru/Array
http://javascript.ru/for..in
http://javascript.ru/String/concat
http://javascript.ru/encodeuricomponent
http://javascript.ru/Array/join
Дерзайте.

z700i 27.07.2012 12:51

a = {
    "uids":[1,9055379],
    "fields":['first_name', 'last_name', 'sex', 'online'],
    "name_case":'nom'
};
/*---------------------------------------------------------------*/
function params(params){
    var res = [];
    for(var p in params){
        res.push(p+'='+params[p]);
    }
    /*return res.join('&');    Использовать надо эту строку, но для примера будет следующая */
    alert(res.join('&'));
}
params(a);

Aetae 27.07.2012 23:39

Забыл http://javascript.ru/encodeuricomponent .=)

melky 29.07.2012 13:26

Цитата:

Сообщение от z700i (Сообщение 191947)
Нужен JS аналог PHP кода
function params($params) {
    $pice = array();
    foreach($params as $k=>$v) {
        $pice[] = $k.'='.urlencode($v);
    }
    return implode('&',$pice);
}​​​​​​

нерекурсивно, но расширяемо.
function params (obj) {
    var res = [], i, type;
    for (i in obj) {
        // класс объекта. Array, Number, Undefined ...
        type = Object.prototype.toString.call(obj[i]).slice(8, -1);
        // либо результат хука, либо "как есть"
        res.push( type in params ? params[type](i, obj[i]) : i + "=" + encodeURI(obj[i]) );
    }
    return res.join("&");
}

// расширения
// научим обрабатывать массивы
params["Array"] = function (key, val) {
    for (var i = 0, buffer = []; i in val; i += 1) {
        buffer.push(key + "[]=" + encodeURI(val[i]));
    }
    return buffer.join("&");
};
// и флаги
params["Undefined"] = function (key) {
    return key;
};

// использование
var prms = {
    foo: "bar", 
    bool: true, 
    num: 9000, 
    arr: [1, 2, 3],
    flag: undefined
};

alert( params(prms) );


Часовой пояс GMT +3, время: 22:10.