Javascript 根据值对对象数组进行排序
我有一组对象:Javascript 根据值对对象数组进行排序,javascript,Javascript,我有一组对象: const array =[ { a: 'good car' }, { a: 'good car1' }, { a: 'good car2' }, { a: 'good car3' }, { a: 'good car4' }, { b: 'good car1' } ]; 我需要通过值对其进行排序,领带除外。在打领带的情况下,键用于断开领带。我搜索了很多,但无法使用答案,因为我在对象中的关键点不相同,而且在领带(值相同)的情况下,我无法处理。 有什么建
const array =[
{ a: 'good car' },
{ a: 'good car1' },
{ a: 'good car2' },
{ a: 'good car3' },
{ a: 'good car4' },
{ b: 'good car1' }
];
我需要通过值对其进行排序,领带除外。在打领带的情况下,键
用于断开领带。我搜索了很多,但无法使用答案,因为我在对象中的关键点不相同,而且在领带(值相同)的情况下,我无法处理。
有什么建议吗?您可以获取条目,选择第一个条目并将其分解为key和value,对另一个对象采用相同的方式,然后返回链式排序值
var数组=[{v21:'sad sdd'},{aaa:'sad sdd'},{v11:'r err rr'},{hf32:'erwer fgh'},{z3f2:'agfrr vbbar'},{t142:'gggoog anfa'},{u23:'fa handler err'};
array.sort((a,b)=>{
var[keyA,valueA]=Object.entries(a)[0],
[keyB,valueB]=Object.entries(b)[0];
返回valueA.localeCompare(valueB)| keyA.localeCompare(keyB);
});
console.log(数组)代码>
.as控制台包装{max height:100%!important;top:0;}
使用es6中的排序
请尝试以下代码:
const数组=[
{v21:'sad sdd'},
{v11:'r err rr'},
{hf32:'erwwer fgh'},
{z3f2:'agfrr vbbar'},
{t142:'agfrr vbbar'},
{u23:'fa handle err'}
]
array.sort((x,y)=>{
if(Object.values(x)[0]>Object.values(y)[0])
返回1
else if(Object.values(x)[0]Object.keys(y)[0])
返回1
else if(Object.keys(x)[0]
您可以尝试以下代码:
const数组=[
{v21:'sad sdd'},
{v11:'r err rr'},
{hf32:'erwwer fgh'},
{z3f2:'agfrr vbbar'},
{z3f1:'agfrr vbbar'},
{t142:'gggoog anfa'},
{u23:'fa handle err'}
];
array.sort((a,b)=>{
if(a[Object.keys(a)[0]]==b[Object.keys(b)[0]]{
返回Object.keys(a)[0].localeCompare(Object.keys(b)[0]);
}
返回一个[Object.keys(a)[0]].localeCompare(b[Object.keys(b)[0]]);
});
console.log(数组)代码>不使用比较功能的变体:
const array = [
{ v21: "sad sdd" },
{ v11: "r err rr" },
{ hf32: "erwwer fgh" },
{ z3f2: "sad sdd" },
{ t142: "gggoog anfa" },
{ u23: "fa handle err" }
];
const result = array
.map(item => ({
key: Object.keys(item)[0],
value: item[Object.keys(item)[0]]
}))
.map(item => `${item.value}:${item.key}`)
.sort()
.map(item => item.split(":"))
.map(item => ({ [item[1]]: item[0] }));
console.log(result);
必须使用其他的连接字符而不是“:”,如果值中需要它一个对象中是否只有一个键/值对?请添加您的尝试。您所说的“在领带的情况下”是什么意思?根据您显示的数组,排序后的预期输出是什么?是的,只有一个键/值在有关系的情况下,我的意思是当值相同时,我应该使用它们的键进行排序