假设我有一个基数组
let object2 = ["DotNet", "ETL", "Hadoop", "Java", "Oracle", "Pega", "MainFrame"]我想按照基数组的相同顺序排列第二个数组。
let object1 = [{Name: "Java", ResourceCount: 3}, {Name: "DotNet", ResourceCount: 4}, {Name: "Hadoop", ResourceCount: 1}, {Name: "Pega", ResourceCount: 2}, {Name: "Oracle", ResourceCount: 1}, {Name: "ETL", ResourceCount: 1}, {Name: "MainFrame", ResourceCount: 0}]所以看起来就像这样
object1 =
[{Name: "DotNet", ResourceCount: 4},
{Name: "ETL", ResourceCount: 1},
{Name: "Hadoop", ResourceCount: 1},
{Name: "Java", ResourceCount: 3},
{Name: "Oracle", ResourceCount: 1},
{Name: "Pega", ResourceCount: 2},
{Name: "MainFrame", ResourceCount: 0}]如果没有硬编码,我怎么能做到呢?
发布于 2019-10-29 17:52:20
一个可能的解决方案是使用Array.map来迭代有序的名称列表,并将每个String“映射”到对象列表中的相关对象中。
关联是使用Array.find完成的,它接收返回相关对象的函数作为参数:
const list1 = ["DotNet", "ETL", "Hadoop", "Java", "Oracle", "Pega", "MainFrame"];
const list2 = [{Name: "Java", ResourceCount: 3}, {Name: "DotNet", ResourceCount: 4}, {Name: "Hadoop", ResourceCount: 1}, {Name: "Pega", ResourceCount: 2}, {Name: "Oracle", ResourceCount: 1}, {Name: "ETL", ResourceCount: 1}, {Name: "MainFrame", ResourceCount: 0}];
const ordered = list1.map(function(nameValue) {
return list2.find((obj) => (obj.Name === nameValue));
});
console.log(ordered);
发布于 2019-10-29 18:01:35
let object2 = ["DotNet", "ETL", "Hadoop", "Java", "Oracle", "Pega", "Mainframe"]
let object1 = [{Name: "Java", ResourceCount: 3}, {Name: "DotNet", ResourceCount: 4}, {Name: "Hadoop", ResourceCount: 1}, {Name: "Pega", ResourceCount: 2}, {Name: "Oracle", ResourceCount: 1}, {Name: "ETL", ResourceCount: 1}, {Name: "Mainframe", ResourceCount: 0}]
var arr=[]
object2.map(item=>{
object1.map(data=>{
if(data.Name===item)
{
arr.push(data)
}
})
})
console.log(arr)
https://stackoverflow.com/questions/58612843
复制相似问题