一、常規的平鋪需求。
給出一個多維對象
var obj = { eureka1: { clinet: { clinetclient: 70, healthcheck1: { enabled: true }, serviceUrl: "http://dsfasdf" }, instance: { health: "/health", hostname: "${hostname}", prefer: true, statuspath: "/info" }, server: { enabledvation: false, peer: 6000 } }, eureka2: { health: { status: { order: "DOWN,UP" } } } }
需要轉換的形式為:

js方法:
<script>
var obj = {
eureka1: {
clinet: {
clinetclient: 70,
healthcheck1: {
enabled: true
},
serviceUrl: "http://dsfasdf"
},
instance: {
health: "/health",
hostname: "${hostname}",
prefer: true,
statuspath: "/info"
},
server: {
enabledvation: false,
peer: 6000
}
},
eureka2: {
health: {
status: {
order: "DOWN,UP"
}
}
}
}
function haveChildren(data, list) {
for (let key in data) {
if (typeof data[key] === 'object' && isNaN(data[key].length)) {
this.haveChildren(data[key], list)
} else {
list.push({
name: key,
value: data[key]
})
}
}
return list
}
var mydata = haveChildren(obj, []);
console.log(mydata1);
</script>
二、在開發的過程中,有接到第二種需求
表現形式為:

代碼:
<script>
var obj = {
eureka1: {
clinet: {
clinetclient: 70,
healthcheck1: {
enabled: true
},
serviceUrl: "http://dsfasdf"
},
instance: {
health: "/health",
hostname: "${hostname}",
prefer: true,
statuspath: "/info"
},
server: {
enabledvation: false,
peer: 6000
}
},
eureka2: {
health: {
status: {
order: "DOWN,UP"
}
}
}
}
function getObjectData(data, list, keyName) {
for (let key in data) {
if (keyName) {
var str = keyName + '.' + key
} else {
var str = key;
}
if (typeof data[key] === 'object' && isNaN(data[key].length)) {
this.getObjectData(data[key], list, str)
} else {
list.push({
name: str,
value: data[key]
})
}
}
return list
}
var mydata1 = getObjectData(obj, []);
console.log(mydata1);
</script>
