0
votes

comment déplacer un objet dans un tableau pour qu'il soit au sommet dans javascript / vue.js

const a = [{
    "iso2": "KH",
    "countryName": "Cambodia",
    "nationality": "Cambodian"
},
{
    "iso2": "KI",
    "countryName": "Kiribati",
    "nationality": "I-Kiribati"
},
{
    "iso2": "KM",
    "countryName": "Comoros",
    "nationality": "Comoran, Comorian"
},
{
    "iso2": "KN",
    "countryName": "Saint Kitts and Nevis",
    "nationality": "Kittitian or Nevisian"
}];
i have an array from Get Api list and i intended to move isow = KN to be on top of the list to be sync with select list option.
i know about push and unshift method. but is there is another easiest way to move an object in Array to be on top of the list?

3 commentaires

Il y a aussi splice () , qui vous permet d'insérer et de supprimer n'importe où dans la liste. Mais si c'est toujours le premier et le dernier, utilisez push , pop , shift et unshift .


voulez-vous que les autres articles conservent leur commande?


si l'objet est au milieu, je pourrais utiliser l'épissure? et si je veux qu'il soit au top, je dois changer ou pousser?


4 Réponses :


0
votes

Vous pouvez utiliser Array.sort pour réorganiser le tableau comme vous le souhaitez.

const a = [{
    "iso2": "KH",
    "countryName": "Cambodia",
    "nationality": "Cambodian"
  },
  {
    "iso2": "KI",
    "countryName": "Kiribati",
    "nationality": "I-Kiribati"
  },
  {
    "iso2": "KM",
    "countryName": "Comoros",
    "nationality": "Comoran, Comorian"
  },
  {
    "iso2": "KN",
    "countryName": "Saint Kitts and Nevis",
    "nationality": "Kittitian or Nevisian"
  }
];

a.sort((item1) => item1.iso2 === 'KN' ? -1 : 1);

console.log(a);


4 commentaires

désolé, mais en fait, il y a plus que ces données. et le kn est en fait au milieu des données.


tous les noms de pays et iso dans le monde


Et vous voulez passer uniquement «ON» au début?


J'ai changé ma réponse



0
votes

essayez ceci:

 let data = [
      {
        iso2: "KH",
        countryName: "Cambodia",
        nationality: "Cambodian"
      },
      {
        iso2: "KI",
        countryName: "Kiribati",
        nationality: "I-Kiribati"
      },
      {
        iso2: "KM",
        countryName: "Comoros",
        nationality: "Comoran, Comorian"
      },
      {
        iso2: "KN",
        countryName: "Saint Kitts and Nevis",
        nationality: "Kittitian or Nevisian"
      }
    ];

    let one = "KN";
    data.sort((x, y) => (x.iso2 == one ? -1 : y.iso2 == one ? 1 : 0));
    console.log(data);


0 commentaires

0
votes

Vous n'avez pas besoin de trier le tableau complet si vous voulez simplement déplacer l'élément au début et ne vous souciez pas de l'ordre des autres éléments.

Vous pouvez simplement trouver l'index de l'élément et l'échanger avec le le premier.

const a = [{
	"iso2": "KH",
	"countryName": "Cambodia",
	"nationality": "Cambodian"
},
{
	"iso2": "KI",
	"countryName": "Kiribati",
	"nationality": "I-Kiribati"
},
{
	"iso2": "KN",
	"countryName": "Saint Kitts and Nevis",
	"nationality": "Kittitian or Nevisian"
},
{
	"iso2": "KM",
	"countryName": "Comoros",
	"nationality": "Comoran, Comorian"
}];

let index = a.findIndex(e => e.iso2 === 'KN');
e = a.splice(index,1);
a.unshift(...e)
console.log(a)

Ou peut supprimer l'élément à l'aide de Array.splice , puis décaler.

const a = [{
	"iso2": "KH",
	"countryName": "Cambodia",
	"nationality": "Cambodian"
},
{
	"iso2": "KI",
	"countryName": "Kiribati",
	"nationality": "I-Kiribati"
},
{
	"iso2": "KM",
	"countryName": "Comoros",
	"nationality": "Comoran, Comorian"
},
{
	"iso2": "KN",
	"countryName": "Saint Kitts and Nevis",
	"nationality": "Kittitian or Nevisian"
}];

let index = a.findIndex(e => e.iso2 === 'KN');

a[0] = (_=a[index], a[index] = a[0],_);
console.log(a)


0 commentaires

0
votes

Vous pouvez simplement inverser votre tableau si vous souhaitez placer le dernier objet en haut. a.reverse ();


0 commentaires