首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在JavaScript或jQuery中对每个数组记录具有多个对象的数组进行排序

如何在JavaScript或jQuery中对每个数组记录具有多个对象的数组进行排序
EN

Stack Overflow用户
提问于 2018-07-20 08:55:04
回答 4查看 42关注 0票数 1

在你可能投票反对我之前:我已经检查了围绕这个问题的所有现有解决方案,但没有一个与此类似。

我想按image.name (JavaScript或jQuery)的字母顺序对此数组进行排序:

var myArray = [{
    creator: {
      "firstname": "Sally",
      familyname: "Bloomfield"
    },
    location: {
      "lat": 12.123,
      lng: 8.846
    },
    image: {
      name: "Hello World",
      size: "50x80"
    }
  },
  {
    creator: {
      firstname: "Bob",
      familyname: "Jones"
    },
    location: {
      lat: 31.593,
      lng: 96.376
    },
    image: {
      name: "Flowerpower",
      size: "40x50"
    }
  },
  {
    creator: {
      firstname: "John",
      familyname: "Walker"
    },
    location: {
      lat: 27.184,
      lng: 123.120
    },
    image: {
      name: "Guiness",
      size: "33x66"
    }
  }
];

排序后的数组输出:

[{
    creator: {
      firstname: "Bob",
      familyname: "Jones"
    },
    location: {
      lat: 31.593,
      lng: 96.376
    },
    image: {
      name: "Flowerpower",
      size: "40x50"
    }
  },
  {
    creator: {
      firstname: "John",
      familyname: "Walker"
    },
    location: {
      lat: 27.184,
      lng: 123.120
    },
    image: {
      name: "Guiness",
      size: "33x66"
    }
  },
  {
    creator: {
      firstname: "Sally",
      familyname: "Bloomfield"
    },
    location: {
      lat: 12.123,
      lng: 8.846
    },
    image: {
      name: "Hello World",
      size: "50x80"
    }
  }
]

首先是F的低幂,然后是Gello,然后是Hello World。

Javascript现有的排序功能不能处理这个问题,因为我已经尝试过了。有没有可能对这样的结构进行排序?

任何帮助都是非常感谢的。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-07-20 09:03:38

myArray.sort(function(a, b) {
    if (a.image.name === b.image.name) {
        return 0;
    }
    return a.image.name < b.image.name ? -1 : 1;
});
票数 2
EN

Stack Overflow用户

发布于 2018-07-20 09:11:51

您可以在对字符串进行排序时使用localeCompare。然后只有一行代码使用Array.sort()

var myArray = [{creator: { "firstname": "Sally", familyname: "Bloomfield"},location: { "lat": 12.123, lng: 8.846},image: {name: "Hello World", size: "50x80"}},{creator: { firstname: "Bob", familyname: "Jones"},location: { lat: 31.593, lng: 96.376},image: {name: "Flowerpower", size: "40x50"}},{creator: { firstname: "John", familyname: "Walker"},location: { lat: 27.184, lng: 123.120},image: {name: "Guiness", size: "33x66"}}];

myArray.sort((a,b) => a.image.name.localeCompare(b.image.name))
console.log(myArray)

票数 4
EN

Stack Overflow用户

发布于 2018-07-20 09:10:07

您可能会遇到问题,因为您的数组中有一个拼写错误。在line 14上有一个单独的双引号"

当我删除额外的引号时,这对我很有效:

var myArraySorted = myArray.sort((a, b) => {
   if (a.image.name < b.image.name) {
       return -1
   }
   return 1;
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51433642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档