[英]how to shift an object in array to be on top in 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"
}];
我有一个来自 Get Api 列表的数组,我打算将 isow = KN 移到列表的顶部,以便与选择列表选项同步。 我知道推送和取消移动方法。 但是还有另一种最简单的方法可以将 Array 中的对象移动到列表顶部吗?
您可以根据需要使用Array.sort
重新排序数组。
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);
尝试这个:
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);
如果您只想将元素移动到开头而不关心其他元素的顺序,则不需要对完整数组进行排序。
您可以简单地找到元素的索引并将其与第一个交换。
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)
或者可以使用Array.splice
删除元素,然后取消Array.splice
。
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)
如果您想将最后一个对象放在顶部,您可以简单地反转您的数组。 a.反向();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.