js对象平铺的两种表现方式

一、常规的平铺需求。

  给出一个多维对象

  

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>

  

 

posted @ 2019-09-02 10:39  _Blank丶  阅读(2300)  评论(0编辑  收藏  举报