es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

“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’);

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Puede usar el método _.sortBy() para ordenar los elementos de la fuente de noticias según su story_id en orden descendente, y luego usar el método _.uniqBy() para filtrar cualquier elemento duplicado con pinned establecido en 1. Finalmente, puede usar el método _.reverse() para invertir el orden del array para que los elementos con pinned establecido en 1 aparezcan primero.

    filtered_news_feed: function() {
        var list = _.sortBy(this.feed_items, ['story_id'],'desc');
        list = _.uniqBy(list, ['pinned']);
        list = _.reverse(list);
        return list;
    },
    

Comments are closed.