JS 对象递归遍历的问题
如下代码:var obj = { test1: 'v1',test2: 'v2',test3: 'v3',test4: {t1: 'ss',t2: 'dd'}};
function f(obj) {
for (var i in obj) {
if (typeof obj === "object") {
f(obj);
} else {
console.log(obj);
}
}
}
f(obj);
会输出对象全部的属性,结果是这样:
v1
v2
v3
ss
dd
但我希望输出键名+属性,代码要怎么写?输出效果例如这样:
test1=v1
test2=v2
test3=v3
test4.t1=ss
test4.t2=dd
谢谢各位吾友指点。
用JS中的 模板字符串 应该可以的 ,具体可以百度一下,就是tab键上面的反引号 本帖最后由 好听吗 于 2019-12-24 08:58 编辑
``` javascript
var obj = { test1: 'v1',test2: 'v2',test3: 'v3',test4: {t1: 'ss',t2: 'dd'}};
function f(obj) {
for (var i in obj) {
if (typeof obj === "object") {
f(obj);
} else {
console.log(`${i}=${obj}`);
}
}
}
f(obj);
``` 好听吗 发表于 2019-12-24 08:55
var obj = { test1: 'v1',test2: 'v2',test3: 'v3',test4: {t1: 'ss',t2: 'd ...
大哥好,谢谢指点,对象中嵌套对象那种还有点问题(如最后两行),你的代码输出是这样:
test1=v1
test2=v2
test3=v3
t1=ss
t2=dd
能否输出这样,谢谢:
test1=v1
test2=v2
test3=v3
test4.t1=ss
test4.t2=dd cqwcns 发表于 2019-12-24 09:00
大哥好,谢谢指点,对象中嵌套对象那种还有点问题(如最后两行),你的代码输出是这样:
test1=v1
test ...
问下 最后这样输出是为了 干什么呢
下面这样的方法不是很实用, 可能会出现一些问题
```
var obj = { test1: 'v1',test2: 'v2',test3: 'v3',test4: {t1: 'ss',t2: 'dd'}};
let pi = ''
function f(obj) {
for (var i in obj) {
if (typeof obj === "object") {
pi = i
f(obj);
} else if(pi){
console.log(`${pi}.${i} = ${obj}`)
}else{
console.log(`${i}=${obj}`)
}
// console.log(`${i}=${obj}`, obj);
}
}
f(obj);
```
var obj = { test1: 'v1',test2: 'v2',test3: 'v3',test4: {t1: 'ss',t2: 'dd'}};
function fun(obj,perfix) {
perfix=perfix?perfix+".":"";
for(item in obj){
if(typeof obj === "object"){
fun(obj,item);
}else{
console.log(`${perfix}${item}=${obj}`);
}
}
}
fun(obj)
https://s2.ax1x.com/2019/12/24/l92Ecj.png
本帖最后由 码神 于 2019-12-24 09:41 编辑
cqwcns 发表于 2019-12-24 09:00
大哥好,谢谢指点,对象中嵌套对象那种还有点问题(如最后两行),你的代码输出是这样:
test1=v1
test ...
var obj = { test1: 'v1',test2: 'v2',test3: 'v3',test4: {t1: 'ss',t2: {a1: 'a1', a2: {c1: 'c1', c2: 'c2'}}}};
function f(obj, attribute) {
for (var i in obj) {
if (typeof obj === "object") {
if(attribute) {
f(obj, `${attribute}.${i}`);
}else {
f(obj, i);
}
} else {
if(attribute) {
console.log(`${attribute}.${i}=${obj}`);
}else {
console.log(`${i}=${obj}`);
}
}
}
}
f(obj); 好听吗 发表于 2019-12-24 09:20
问下 最后这样输出是为了 干什么呢
下面这样的方法不是很实用, 可能会出现一些问题
是为了有完整的层级关系,用来写入另一个对象。
谢谢大哥。 var obj = { test1: 'v1',test2: 'v2',test3: 'v3',test4: {t1: 'ss',t2: 'dd',t3:{a:'12',b:'34'}}};
function f(obj,keys='') {
for (var i in obj) {
if (typeof obj === "object") {
f(obj,keys.concat(`${i}.`));
} else {
console.log(`${keys+i}=${obj}`);
}
}
}
wei125483 发表于 2019-12-24 09:27
var obj = { test1: 'v1',test2: 'v2',test3: 'v3',test4: {t1: 'ss',t2: 'dd',t3:{a:'12',b:'34'}}};
f ...
写法一般 能满足你的要求
页:
[1]
2