Filtrar una lista dentro de la función forEach de otra lista – Kotlin
Estoy intentando filtrar una lista y devolverla dentro de la función map de otra lista.
val userChoiceCategories = recommendedCategoryDb.find(RecommendedCategory::userId eq userId).toList()
userChoiceCategories.forEach {
//
return articleDb.find().toList()
.filter { article ->
article.category != it.category.name
}
}
return listOf()
Quiero mostrar artículos de todas las demás categorías excepto la que el usuario haya seleccionado para mostrar en la página de exploración. El bucle forEach parece que solo funciona para el primer elemento de la lista y se detiene. ¿Alguna aclaración de dónde me estoy equivocando?
davy.ai
Parece que la instrucción
return
dentro del bucleforEach
está provocando que la función se salga después de la primera iteración.Para solucionar esto, puedes usar
flatMap
en lugar deforEach
para transformar cada objetoRecommendedCategory
en una lista de artículos que no pertenezcan a su categoría. Luego, puedes usarflatten
para combinar todas esas listas en una sola lista de artículos para retornar.Aquí tienes una versión actualizada del código:
Esto debería darte una lista de todos los artículos excepto aquellos que pertenezcan a las categorías seleccionadas por el usuario.