在你可能投票反对我之前:我已经检查了围绕这个问题的所有现有解决方案,但没有一个与此类似。
我想按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现有的排序功能不能处理这个问题,因为我已经尝试过了。有没有可能对这样的结构进行排序?
任何帮助都是非常感谢的。
发布于 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;
});
发布于 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)
发布于 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;
});
https://stackoverflow.com/questions/51433642
复制相似问题