Saltar al contenido

Mover elemento a la primera posición en array

Comprende el código correctamente previamente a aplicarlo a tu proyecto si ttienes algo que aportar puedes decirlo en los comentarios.

Solución:

Como solo está moviendo un elemento a la parte superior, solo usaré splice() y unshift() el objeto:

var data = [
     id: "fmgbwe45", age: 24, gender: "male"   ,
     id: "kjregh23", age: 27, gender: "female" , 
     id: "kjfdhg87", age: 30, gender: "male" , 
     id: "lsdjfk43", age: 10, gender: "female" , 
]
data.forEach(function(item,i)
  if(item.id === "kjfdhg87")
    data.splice(i, 1);
    data.unshift(item);
  
);

console.log(data);

Puedes usar unshift método.

var data = [
     id: "fmgbwe45", age: 24, gender: "male"   ,
     id: "kjregh23", age: 27, gender: "female" , 
     id: "kjfdhg87", age: 30, gender: "male" , 
     id: "lsdjfk43", age: 10, gender: "female" , 
]

var stringToFilter = 'kjfdhg87';   //this holds 'kjfdhg87'
data.unshift(data.splice(data.findIndex(item => item.id === stringToFilter), 1)[0])
console.log(data);

Aquí hay un enfoque diferente que no muta. Estoy usando TypeScript solo para la definición de Persona, pero aparte de eso, es solo ES6.

Básicamente solo necesitamos:

  1. Filtrar a la persona del original array
  2. Insértalo de nuevo al principio.
movePersonInArray(person: Person, arrayOfPersons: Person[]): Person[] 
    // remove the item from the array
    const filterArrayOfPersons = arrayOfPersons.filter((p: Person) => p.id !== person.id);
    // add it at the beginning
    return [ ...person , ...filterArrayOfPersons];

Si no te importa mezclar un poco las cosas, puedes evitar el untado operador y uso desarmar en cambio. En particular, no me gusta mezclar funciones que mutan el array con aquellos que no, pero en ciertos escenarios, puede obtener algunas mejoras de rendimiento. Por ejemplo, durante mucho tiempo arrayel siguiente cambio en el método original acelerará un poco las cosas manteniendo la legibilidad.

 // add it at the beginning
filterArrayOfPersons.unshift(...person);
return filterArrayOfPersons;

Ninguno de estos dos enfoques muta el arrayOfPersons array, en su lugar, devuelven una copia con los cambios. Aquí puedes aprender más sobre array métodos de mutación https://doesitmutate.xyz/

PD. los Persona tipo puede ser algo como esto:

export interface Person 
id: string;
name: string;
age: number;

¡Paz!

Recuerda algo, que te brindamos la opción de interpretar si tropezaste tu rompecabezas a tiempo.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *