嵌套的 for 循环将不起作用。句法?
Posted
技术标签:
【中文标题】嵌套的 for 循环将不起作用。句法?【英文标题】:Nested for loop will not work. Syntax? 【发布时间】:2018-04-23 21:53:50 【问题描述】:为什么这段代码不起作用?第二个循环中的 console.log 不会触发。
this.afDatabase.list(`data/users/$this.currentUserID/visits/`, ref => ref.orderByChild('type').equalTo('study')).snapshotChanges().map(changes =>
return changes.map(c => ( key: c.payload.key, ...c.payload.val() ));)
.take(1).subscribe(data =>
let studys1 = [];
let studys2 = [];
for (let i=0; i < data.length; i++)
studys1.push(data[i]);
for(let j=0; j < data[i].length; j++)
console.log(data[i][j]); //This not fires. I see nothing in the console
studys2.push(data[i][j]) // Neither...
console.log('Parent Length: ' + studys1.length); // Works
console.log('Child Length: ' + studys2.length); //Always 0
);
我要获取的数据:
console.log('%O',data)
给出以下输出:
有什么想法吗?
【问题讨论】:
console.log('%O',data)
将有助于提供 data
的外观。
我使用您需要的 console.log 数据编辑了我的帖子。 :)
数据项不是数组,它们是对象。您可以迭代一个对象,但它与数组迭代不同。只需搜索 typescript 对象迭代。
您是否要将age
country
date
等的值推送到studys2
中? Object.keys(obj)
可能会有所帮助。
不,我需要计算子对象。所以在上面的例子中,console.log('studys2.length') 的结果必须是 1..
【参考方案1】:
迭代对象与迭代数组不同,您可以使用for-in
来迭代对象:
for(var i in data)
for(var j in data[i])
console.log(data[i][j]);
studys2.push(data[i][j]);
;
;
希望这会有所帮助。
【讨论】:
谢谢,这是一个进步。但我不需要来自对象子对象的所有数据。我只需要计算对象孩子自己。所以在上面的例子中console.log('studys2.length')
的结果必须是1
...
@eleinad 不知道我是否做对了。您只想要第一个子键中的内容吗?在你的情况下-KyaYm...
中的内容?
不是内容,只是数量。说明:我需要知道以“学习”为类型的所有条目的计数。我有父条目和子条目。所以我需要所有的计数来建立总和。就是这样:-)
所以你有一个数组中的对象,并且想要获取具有 type = "study" 的对象的数量,我猜对了吗?以上是关于嵌套的 for 循环将不起作用。句法?的主要内容,如果未能解决你的问题,请参考以下文章
使用 p 标签的嵌套 v-for 循环在 Vue.js 中不起作用