2017-09-04 86 views
0

我想重复我的变量线程:迭代在流

threads: Subject<{[key: string]: Thread }> = new BehaviorSubject({}); 

尽管我多次尝试:

return this.threads.asObservable().map((threadDictionary: {[key: string]: Thread}) => { 
    for(let key in threadDictionary) { 
    console.log("key", threadDictionary[key]); 
    if(threadDictionary[key].participants[0].name.startsWith(str)) { 
     return threadDictionary[key]; 
    } 
    } 
}); 


return this.threads.map((threadDictionary: {[key: string]: Thread}) => { 
.flatMap((threadDictionary: {[key: string]: Thread}) => { 
    for(let key in threadDictionary) { 
     console.log("key", threadDictionary[key]); 
     if(threadDictionary[key].participants[0].name.startsWith(str)) { 
     return threadDictionary[key]; 
     } 
    } 
    }); 
}); 

////////////// /////// 编辑 /////////////////////

return this.threads.asObservable().map((threadDictionary: {[key: string]: Thread}) => { 
    return threadDictionary[key]; 
}); 

    for(let key in threadDictionary) { 
    console.log("key", threadDictionary[key]); 
    if(threadDictionary[key].participants[0].name.startsWith(str)) { 
     return threadDictionary[key]; 
    } 
    } 

我想知道这是可能创造一个For循环在我的可变线程上。我应该改变它的变量类型吗?或者如何使这个循环?

回答

0

您不能迭代threadDictionary参数,因为它不是数组。您可以尝试返回调用.map()的值,然后迭代结果。

var threadDictionary = this.threads.asObservable().map((threadDictionary: {[key: string]: Thread}) => { 
    return threadDictionary; 
}); 

for(let key in threadDictionary) { 
    console.log("key", threadDictionary[key]); 
    if(threadDictionary[key].participants[0].name.startsWith(str)) { 
    return threadDictionary[key]; 
    } 
} 
+0

对不起,我不明白你的解决方案。 我发表了我的文章,但我不认为它是这样的.. – Floriane

+0

你有一个例子吗? – Floriane

+0

查看我刚刚提供的示例。 –