var layer = function (obj, chart = '/') {
let result = []
function goIn (ob) {
if (Array.isArray(ob)) {
return
}
return ob && ob instanceof Object && Object.keys(ob).length
}
function getTopArr (ob, p) {
let arr = []
for (let k in ob) {
arr.push({k, v: ob[k], p})
}
return arr
}
if (goIn(obj)) {
let stack = getTopArr(obj, '')
while (stack.length) {
let item = stack.shift()
if (goIn(item.v)) {
stack = getTopArr(item.v, item.p +chart + item.k).concat(stack)
} else {
result.push(item)
}
}
}
return result
}
const originData1 = {
a: {
b: {
c: {
d: {
e: 1,
f: 2,
g: 3
}
}
},
x: 1,
y: 2,
z: {
a: 1,
b: [
{
o: 1,
p: 2,
q: [ 1, 2, 3 ]
}
],
c: {
d: {
e: 1,
g: 2
}
}
}
},
q: [ 1, 2, 3 ],
b: 1,
c: {
d: 1
}
}
let arr = layer(originData1)
arr.forEach(function(item){
console.log(item.p+'/'+item.k, ':', item.v)
})
网友评论