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.

¿Cómo obtener valores distintos de un array en JavaScript?

Suponiendo que tengo lo siguiente:

var array = [
    {"name":"Joe", "age":null, "date":"1959-08-10", "home":"ny"},
    {"name":"Bill", "age":null, "date":"1956-08-10", "home":"tx"},
    {"name":"Joe", "age":"17", "date":null, "home":"ny"},
    {"name":null, "age":"17", "date":"1956-08-10", "home":"tx"},
    {"name":"Joe", "age":"17", "date":"1959-08-10", "home":null}
]

¿Cuál es la mejor manera de obtener un nuevo array?

var new_array = [
    {"name":"Joe", "age":"17", "date":"1959-08-10", "home":"ny"},
    {"name":"Bill", "age":"17", "date":"1956-08-10", "home":"tx"}
]
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    La mejor manera de obtener el nuevo array sería utilizando el método array.reduce() e iterar sobre el array de objetos. Dentro de la función reduce, podemos crear un nuevo objeto con las propiedades deseadas y luego comprobar si ya existe en el array acumulador utilizando el método array.some(). Si no existe, lo insertamos en el array acumulador. Finalmente, devolvemos el array acumulador.

    Aquí está el código:

    var new_array = array.reduce(function(accumulator, current) {
      var obj = {
        name: current.name || '',
        age: current.age || '',
        date: current.date || '',
        home: current.home || ''
      };
      if (!accumulator.some(function(item) {
        return item.name === obj.name && item.age === obj.age && item.date === obj.date && item.home === obj.home;
      })) {
        accumulator.push(obj);
      }
      return accumulator;
    }, []);
    

    Esto nos dará el resultado deseado en el nuevo array.

Comments are closed.