51,412
社区成员
发帖
与我相关
我的任务
分享
本宝宝表述不清出这一定是因为星座的原因
上面是定义的一个简单地js对象,其中field1,field2表示这个属性就到底了,不往下写了。
正常来说如果想要遍历出这个串的值,必须这样做:
for(var m in a.b) {
console.log(m.c.field1);
console.log(m.c.field2);
}
但是这只是一层的情况,假如我要寻找的更深,这里就得写成:
for(var m in a.b) {
console.log(m.c.d.e.f.g.field1);
console.log(m.c.d.e.f.g.field2);
}
究其原因,仅仅是因为这个数组存在的位置
a.b是一个数组,我们却要获取b.c.d.e.f.g下面的属性
扁平化取值的意思是,直接这样用:
for(var m in a.b.c.d.e.f.g) {
console.log(m.field1);
console.log(m.field2);
}
虽然说一个数组下面不可能有c这个属性,但数组的元素下有这个属性,因此完全有理由做这样一个兼容,直接将元素下的属性拼成一个List返回给遍历表达式
免得循环遍历过程中填写太多毫无意义的中间量!
本宝宝表述不清出这一定是因为星座的原因
上面是定义的一个简单地js对象,其中field1,field2表示这个属性就到底了,不往下写了。
正常来说如果想要遍历出这个串的值,必须这样做:
for(var m in a.b) {
console.log(m.c.field1);
console.log(m.c.field2);
}
但是这只是一层的情况,假如我要寻找的更深,这里就得写成:
for(var m in a.b) {
console.log(m.c.d.e.f.g.field1);
console.log(m.c.d.e.f.g.field2);
}
究其原因,仅仅是因为这个数组存在的位置
a.b是一个数组,我们却要获取b.c.d.e.f.g下面的属性
扁平化取值的意思是,直接这样用:
for(var m in a.b.c.d.e.f.g) {
console.log(m.field1);
console.log(m.field2);
}
虽然说一个数组下面不可能有c这个属性,但数组的元素下有这个属性,因此完全有理由做这样一个兼容,直接将元素下的属性拼成一个List返回给遍历表达式
免得循环遍历过程中填写太多毫无意义的中间量![/quote]
朋友,数据的存储格式是取决于数据本身的逻辑结构的。
如果你需要用多层级的结果去表达多层级的含义,那就需要多层级的存储,例如我们常看到的图书的分类结果,一层层递进。
如果你要表示你买了多少图书,那么用一级存储就ok了。
数据的存储格式是取决于数据本身的逻辑结构的。
[/quote]
所以数据的存储格式有这么多的讲究,当然不能随便改动~!
所以才要在"取用数据"的时候做文章啊![/quote]
那也行啊,你自己定义一个函数,一层层递归,发现值了就取出来,也ok。
做个通用的,任何object都能深层递归的。
本宝宝表述不清出这一定是因为星座的原因
上面是定义的一个简单地js对象,其中field1,field2表示这个属性就到底了,不往下写了。
正常来说如果想要遍历出这个串的值,必须这样做:
for(var m in a.b) {
console.log(m.c.field1);
console.log(m.c.field2);
}
但是这只是一层的情况,假如我要寻找的更深,这里就得写成:
for(var m in a.b) {
console.log(m.c.d.e.f.g.field1);
console.log(m.c.d.e.f.g.field2);
}
究其原因,仅仅是因为这个数组存在的位置
a.b是一个数组,我们却要获取b.c.d.e.f.g下面的属性
扁平化取值的意思是,直接这样用:
for(var m in a.b.c.d.e.f.g) {
console.log(m.field1);
console.log(m.field2);
}
虽然说一个数组下面不可能有c这个属性,但数组的元素下有这个属性,因此完全有理由做这样一个兼容,直接将元素下的属性拼成一个List返回给遍历表达式
免得循环遍历过程中填写太多毫无意义的中间量![/quote]
朋友,数据的存储格式是取决于数据本身的逻辑结构的。
如果你需要用多层级的结果去表达多层级的含义,那就需要多层级的存储,例如我们常看到的图书的分类结果,一层层递进。
如果你要表示你买了多少图书,那么用一级存储就ok了。
数据的存储格式是取决于数据本身的逻辑结构的。
[/quote]
所以数据的存储格式有这么多的讲究,当然不能随便改动~!
所以才要在"取用数据"的时候做文章啊!
本宝宝表述不清出这一定是因为星座的原因
上面是定义的一个简单地js对象,其中field1,field2表示这个属性就到底了,不往下写了。
正常来说如果想要遍历出这个串的值,必须这样做:
for(var m in a.b) {
console.log(m.c.field1);
console.log(m.c.field2);
}
但是这只是一层的情况,假如我要寻找的更深,这里就得写成:
for(var m in a.b) {
console.log(m.c.d.e.f.g.field1);
console.log(m.c.d.e.f.g.field2);
}
究其原因,仅仅是因为这个数组存在的位置
a.b是一个数组,我们却要获取b.c.d.e.f.g下面的属性
扁平化取值的意思是,直接这样用:
for(var m in a.b.c.d.e.f.g) {
console.log(m.field1);
console.log(m.field2);
}
虽然说一个数组下面不可能有c这个属性,但数组的元素下有这个属性,因此完全有理由做这样一个兼容,直接将元素下的属性拼成一个List返回给遍历表达式
免得循环遍历过程中填写太多毫无意义的中间量![/quote]
朋友,数据的存储格式是取决于数据本身的逻辑结构的。
如果你需要用多层级的结果去表达多层级的含义,那就需要多层级的存储,例如我们常看到的图书的分类结果,一层层递进。
如果你要表示你买了多少图书,那么用一级存储就ok了。
数据的存储格式是取决于数据本身的逻辑结构的。