28 lines
769 B
JavaScript
28 lines
769 B
JavaScript
"use strict"
|
|
|
|
module.exports = function(object, dataKeys) {
|
|
if (Object.prototype.toString.call(object) !== "[object Object]") return ""
|
|
|
|
var args = []
|
|
dataKeys = dataKeys || Object.keys(object)
|
|
for (var i = 0; i < dataKeys.length; i++) {
|
|
var key = dataKeys[i]
|
|
destructure(key, object[key])
|
|
}
|
|
|
|
return args.join("&")
|
|
|
|
function destructure(key, value) {
|
|
if (Array.isArray(value)) {
|
|
for (var i = 0; i < value.length; i++) {
|
|
destructure(key + "[" + i + "]", value[i])
|
|
}
|
|
}
|
|
else if (Object.prototype.toString.call(value) === "[object Object]") {
|
|
for (var i in value) {
|
|
destructure(key + "[" + i + "]", value[i])
|
|
}
|
|
}
|
|
else args.push(encodeURIComponent(key) + (value != null && value !== "" ? "=" + encodeURIComponent(value) : ""))
|
|
}
|
|
}
|