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?
4 Réponses :
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);
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
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);
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)
Vous pouvez simplement inverser votre tableau si vous souhaitez placer le dernier objet en haut. a.reverse ();
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, utilisezpush,pop,shiftetunshift.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?