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.

Obtenga los resultados de una columna que no sean NULL en un array de objetos en Angular 12.

Tengo un proyecto Angular 12 y quiero recuperar todos los resultados en la columna artisticBehaviour (excepto aquellos que sean null o iguales, por ejemplo, Actor, Actor) en la tabla Users.

Aquí está la función que llamo para obtener todos los usuarios de la tabla Users.

allArtistsSet() {
  this.userData.allArtists(this.offset).pipe(
    map((data: any) => {
      if (data.success) {
        this.allArtists = data.artistsFeed;
        this.creativenessArtists = this.allArtists.filter((data) => 
          data.artisticBehaviour != null);
      }
    })
  ).subscribe()
}
<select style="background-color: #333;color: whitesmoke;padding: 5px;font-size: small; border-radius: 5px;width: 110px;">
    <option disabled="">Comportamiento creativo</option>
    <option>Creatividad</option>
    <option *ngfor="let creative of creativenessArtists" value="{{creative}}">{{creative}}</option>
</select>

Esto devuelve:

none
[object Object]
[object Object]

Aquí está la estructura del array devuelto. Quiero obtener solo los valores de artisticBevaiour pero no los que sean null.

{success: true, artistsFeed: [,…]}
artistsFeed: [,…]
0: 
artisticBehaviour: null
username: "RickChavez"

1: 
artisticBehaviour: "Writer"
username: "babarshahb05"

2: 
artisticBehaviour: "Actor"
username: "shakir"

3: {friend<em>id: "587", friend</em>two: "1102", friend_one: "1122", uid: "1102", username: "mellita863",…}
.....

En este caso, quiero obtener “Actor” y “Writer”, pero no null.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para obtener todos los resultados en la columna “artisticBehaviour” excepto aquellos que son nulos, puedes modificar la función de filtro en el método “allArtistsSet()” para incluir solo valores no nulos y únicos. Aquí tienes un ejemplo:

    allArtistsSet() {
      this.userData.allArtists(this.offset).pipe(
        map((data: any) => {
          if (data.success) {
            this.allArtists = data.artistsFeed;
            const artisticBehaviours = this.allArtists.map(data => data.artisticBehaviour)
                                                    .filter((value, index, self) => value !== null && self.indexOf(value) === index);
            this.creativenessArtists = artisticBehaviours;
          }
        })
      ).subscribe();
    }
    

    En esta versión modificada, primero utilizamos la función map() para crear un array de todos los valores de “artisticBehaviour” del array “allArtists”. Luego, utilizamos la función filter() para eliminar cualquier valor nulo y cualquier duplicado del array, dejando solo valores únicos no nulos.

    Con este nuevo array de “artisticBehaviours”, puedes actualizar tu plantilla HTML para mostrar solo esos valores:

    <select style="background-color: #333;color: whitesmoke;padding: 5px;font-size: small; border-radius: 5px;width: 110px;">
      <option disabled="">Comportamiento Creativo</option>
      <option>Creatividad</option>
      <option *ngfor="let creative of creativenessArtists" value="{{creative}}">{{creative}}</option>
    </select>
    

    Ahora, el menú desplegable solo mostrará los valores de “artisticBehaviour” no nulos y únicos de la tabla “Users”.

Comments are closed.