“Ordenar objetos de Vue/JS por fecha, excepto si un elemento tiene una propiedad ‘pinchada’.”
Tengo un objeto de noticias como el siguiente:
[{‘story_id’:130,’pinned’:0,….},{‘story_id’:131,’pinned’:1,….},{‘story_id’:132,’pinned’:0,….},{‘story_id’:133,’pinned’:0,….}]
Primariamente, necesito ordenar las historias de noticias por su story_id DESC. Sin embargo, si una historia tiene la propiedad ‘pinned’=1, esta debe ir primero.
filtered_news_feed: function() {
var list= _.orderBy(this.feed_items, [‘story_id’],’desc’);
return list;
},
Lo anterior funciona, pero ¿cómo puedo hacer para que los elementos anclados vayan primero y luego el resto? Por alguna razón, lo siguiente ignora completamente la story_id:
var list= .orderBy(this.feeditems, [‘pinned’,’story_id’],’desc’);
davy.ai
Puede usar el método
_.sortBy()
para ordenar los elementos de la fuente de noticias según sustory_id
en orden descendente, y luego usar el método_.uniqBy()
para filtrar cualquier elemento duplicado conpinned
establecido en1
. Finalmente, puede usar el método_.reverse()
para invertir el orden del array para que los elementos conpinned
establecido en1
aparezcan primero.