var a = {
b: {
c: 1,
d: 2,
e: [1,2,3, [4,5,6], {name: 'haha', age: 18}]
},
haha: 'zzz',
bb: [88,99,11,{ ert: 11, zzz: [1,2,3] }]
}
function isObject (val) {
return typeof val === 'object' && val !== null;
}
function flatter (obj) {
const hash = {};
function process (val, key = '') {
if (Array.isArray(val)) {
val.forEach((v, index) => {
process(v, `${key}[${index}]`);
});
} else if (isObject(val)) {
for (const item in val) {
process(val[item], key ? `${key}.${item}` : item)
}
} else {
hash[key] = val;
}
}
process(obj);
return hash;
}
function arrFlat (arr) {
return arr.reduce((prev, cur) => {
return Array.isArray(cur) ? [...prev, ...arrFlat(cur)] : [...prev, cur]
}, []);
}
function arrFlat2 (arr) {
while (arr.some((item) => Array.isArray(item))) {
arr = [].concat(...arr);
}
return arr;
}
console.log(flatter(a));
console.log(arrFlat([1,2,3,[4,5,6,[7,8,9,[10]]]]));
console.log(arrFlat2([1,2,3,[4,5,6,[7,8,9,[10]]]]));