Javascript 基于另一个数组按键对数组对象排序
我有一个名为“sortOrder”的数组,我希望使用它作为我要对“dataSet”数组进行排序的模型顺序Javascript 基于另一个数组按键对数组对象排序,javascript,arrays,data-structures,Javascript,Arrays,Data Structures,我有一个名为“sortOrder”的数组,我希望使用它作为我要对“dataSet”数组进行排序的模型顺序 const sortOrder = [ "FirstName", "LastName", "Address", "City", "State", "
const sortOrder = [
"FirstName",
"LastName",
"Address",
"City",
"State",
"Zip",
"Country" ]
const dataSet = [
{ Zip: "00199",
City: "Birmingham",
State: "AL",
LastName: "Ellis",
Country: "USA",
FirstName: "Dominique",
Address: "127 East Avenue J St",
},
{ Zip: "95421",
City: "San Francisco",
State: "CA",
LastName: "Orlando",
Country: "USA",
FirstName: "Mitchell",
Address: "90 Market Street Unit 2",
},
{ Zip: "DN11 5XQ",
City: "Wadworth",
State: "AL",
LastName: "Connolly",
Country: "UK",
FirstName: "John",
Address: "130 New Dover Rd",
}
]
目标:根据“sortOrder”数组中的键对以下对象进行排序:
我尝试使用sort方法来处理排序,但它不起作用。关于如何按键对该数据集进行排序,有什么建议吗
我失败的尝试:
dataSet.sort((a, b) => {
return sortOrder.indexOf(a) - sortOrder.indexOf(b);
});
console.log("SortedDataSet", dataSet);
const sortOrder=[
“名字”,
“姓氏”,
“地址”,
“城市”,
“国家”,
“拉链”,
“国家”
]
让数据集=[{
邮政编码:“00199”,
城市:“伯明翰”,
声明:“AL”,
姓:“埃利斯”,
国家:“美国”,
名字:“多米尼克”,
地址:“东大街J街127号”,
},
{
邮政编码:“95421”,
城市:“旧金山”,
国家:“CA”,
姓氏:“奥兰多”,
国家:“美国”,
名字:“米切尔”,
地址:“街市街90号2单元”,
},
{
邮政编码:“DN11 5XQ”,
城市:“沃德沃思”,
声明:“AL”,
姓:“康诺利”,
国家:“英国”,
名字:“约翰”,
地址:“新多佛路130号”,
}
]
让解决方案=dataSet.map(数据=>{
设obj={}
for(让分类机的键){
obj[键]=数据[键];
}
返回obj
})
console.log(解决方案)
const sortOrder=[
“名字”,
“姓氏”,
“地址”,
“城市”,
“国家”,
“拉链”,
“国家”
]
让数据集=[{
邮政编码:“00199”,
城市:“伯明翰”,
声明:“AL”,
姓:“埃利斯”,
国家:“美国”,
名字:“多米尼克”,
地址:“东大街J街127号”,
},
{
邮政编码:“95421”,
城市:“旧金山”,
国家:“CA”,
姓氏:“奥兰多”,
国家:“美国”,
名字:“米切尔”,
地址:“街市街90号2单元”,
},
{
邮政编码:“DN11 5XQ”,
城市:“沃德沃思”,
声明:“AL”,
姓:“康诺利”,
国家:“英国”,
名字:“约翰”,
地址:“新多佛路130号”,
}
]
让解决方案=dataSet.map(数据=>{
设obj={}
for(让分类机的键){
obj[键]=数据[键];
}
返回obj
})
console.log(解决方案)
您真的需要使用排序功能吗?我想你可以用地图完成你想要的。嗯。。。让我重新考虑一下@Danibrum你真的需要使用排序函数吗?我想你可以用地图完成你想要的。嗯。。。让我重新考虑一下@但这并没有达到预期的效果。这没有排序。你能给出原始输入及其相应的排序输出吗?这是我在问题中发布的内容-我甚至给出了示例输出/goal@Ketan Ramteke-我希望数据集数组按照与排序器数组相同的顺序排序。请检查更新的答案。i。我们所知道的地图是前进的方向。谢谢你,这成功了!不是预期的结果。这没有排序。你能给出原始输入及其相应的排序输出吗?这是我在问题中发布的内容-我甚至给出了示例输出/goal@Ketan Ramteke-我希望数据集数组按照与排序器数组相同的顺序排序。请检查更新的答案。i。我们所知道的地图是前进的方向。谢谢你,这成功了!
dataSet.sort((a, b) => {
return sortOrder.indexOf(a) - sortOrder.indexOf(b);
});
console.log("SortedDataSet", dataSet);
const dataSet = [
{ Zip: "00199",
City: "Birmingham",
State: "AL",
LastName: "Ellis",
Country: "USA",
FirstName: "Dominique",
Address: "127 East Avenue J St",
},
{ Zip: "95421",
City: "San Francisco",
State: "CA",
LastName: "Orlando",
Country: "USA",
FirstName: "Mitchell",
Address: "90 Market Street Unit 2",
},
{ Zip: "DN11 5XQ",
City: "Wadworth",
State: "AL",
LastName: "Connolly",
Country: "UK",
FirstName: "John",
Address: "130 New Dover Rd",
}
];
const sortOrder = [
"FirstName",
"LastName",
"Address",
"City",
"State",
"Zip",
"Country" ];
let sortedDataSet = [];
dataSet.forEach((d) => {
let entry = {};
sortOrder.forEach((s) => {
entry[s] = d[s];
});
sortedDataSet.push(entry);
});
console.log('Original Dataset');
console.log(dataSet);
console.log('Sorted Dataset');
console.log(sortedDataSet);