繁体   English   中英

如何将数组中的对象移动到 javascript/vue.js 的顶部

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM