Javascript 基于另一个数组按键对数组对象排序

Javascript 基于另一个数组按键对数组对象排序,javascript,arrays,data-structures,Javascript,Arrays,Data Structures,我有一个名为“sortOrder”的数组,我希望使用它作为我要对“dataSet”数组进行排序的模型顺序 const sortOrder = [ "FirstName", "LastName", "Address", "City", "State", "

我有一个名为“sortOrder”的数组,我希望使用它作为我要对“dataSet”数组进行排序的模型顺序

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);