object.js 1.38 KB
// 格式化ajax数据
const formatDeepObj = (origin, key) => {
    for (const k in origin[key]) {
        if (typeof origin[key][k] === 'object' && !Array.isArray(origin[key][k]) && origin[key][k] !== null) {
            for (const id in origin[key][k]) {
                const c = `${key}[${k}].${id}`;
                origin[c] = origin[key][k][id];
            }
        }
    }
    return origin;
};

/**
 * 模拟formdata
 * 这种方式只能适用于简单地嵌套结构,不要超过一层!不要超过一层!不要超过一层!多了后端自己想想办法
 * @param obj
 * @returns {*}
 */
export function formatAjaxData(obj) {
    for (const key in obj) {
        if (obj.hasOwnProperty(key) && Array.isArray(obj[key])) {
            for (const k in obj[key]) {
                if (typeof obj[key][k] === 'object' && !Array.isArray(obj[key][k])) {
                    obj = formatDeepObj(obj, key);
                } else if (obj[key].hasOwnProperty(k)) {
                    obj[`${key}[${k}]`] = obj[key][k];
                }
            }
            delete obj[key];
        } else if (obj.hasOwnProperty(key) && typeof obj[key] === 'object') {
            for (const k in obj[key]) {
                if (obj[key].hasOwnProperty(k)) {
                    obj[`${key}.${k}`] = obj[key][k];
                }
            }
            delete obj[key];
        }
    }
    return obj;
}