Сообщение от z700i
|
Нужен 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) );