通用object扁片化(可处理数组)
function flat(obj) {
const res = {};
const fun = (key, value) => {
if (Object(value) !== value) {
if (key) res[key] = value;
} else if (Array.isArray(value)) {
for (let i = 0; i < value.length; i++) fun(`${key}[${i}]`, value[i]);
if (value.length === 0) res[key] = [];
} else {
const keys = Object.keys(value);
keys.forEach((item) => fun(key ? `${key}.${item}` : `${item}`, value[item]));
if (keys.length === 0 && key) res[key] = {};
}
};
fun('', obj);
return res;
}
不含数组扁片化
function flat(obj, key = '', res = {}) {
Object.entries(obj).forEach(([k, v]) => {
if (v && typeof v === 'object') flat(v, key + k + '.', res);
else res[key + k] = v;
});
return res;
}