/***** 方法封装 *****/
function objToFd(obj, form, name) {
const fd = form || new FormData()
if (typeof obj !== 'object' || obj instanceof File) {
fd.append(name, obj)
return fd
}
const keyName = name ? name + '.' : ''
for (const prop in obj) {
// 判断是自己的属性 且不为空
if (prop != null && obj.hasOwnProperty(prop) && obj[prop] != null && obj[prop] !== '') {
const val = obj[prop]
if (val instanceof Array) {
// 如果是数组
val.map((item, index) => {
objToFd(item, fd, keyName + prop + '[' + index + ']')
})
} else {
objToFd(val, fd, keyName + prop)
}
}
}
return fd
}
/***** 测试 *****/
let data = {
k1: "k1-v",
k2: 345,
k3: {
k31: [1, 2, { k313: 'k313-v' }],
k32: {
k321: 'k321-v',
k322: true,
k323: ['con', 'ff']
}
},
k4: '',
k5: undefined,
k6: ['m', 'd', 'z', 'z']
}
const fd = objToFd(data);
for (var pair of fd.entries()) {
console.log(pair[0] + ': ' + pair[1])
}
/******* 输出 *******/
k1: k1-v
k2: 345
k3.k31[0]: 1
k3.k31[1]: 2
k3.k31[2].k313: k313-v
k3.k32.k321: k321-v
k3.k32.k322: true
k3.k32.k323[0]: con
k3.k32.k323[1]: ff
k6[0]: m
k6[1]: d
k6[2]: z
k6[3]: z
对象转formdata键值对
最新推荐文章于 2024-07-16 10:52:35 发布