如何从Javascript中的对象数组中获取不同的对象

如何从Javascript中的对象数组中获取不同的对象,javascript,arrays,Javascript,Arrays,我有一个结构如下的物体 const数据=[ {academicYearId:1,classLevelId:1,subjectId:1,…}, {academicYearId:1,classLevelId:1,subjectId:2,…}, {academicYearId:1,classLevelId:1,subjectId:3,…}, ,,, ] 我需要创建一个函数,它将返回唯一的列,例如 const uniqueColumns=(val,columns)=>{ // } 常数val=[ {i

我有一个结构如下的物体

const数据=[
{academicYearId:1,classLevelId:1,subjectId:1,…},
{academicYearId:1,classLevelId:1,subjectId:2,…},
{academicYearId:1,classLevelId:1,subjectId:3,…},
,,,
]
我需要创建一个函数,它将返回唯一的列,例如

const uniqueColumns=(val,columns)=>{
//
}
常数val=[
{id:1,名称:'n1',val:1},
{id:1,名称:'n1',val:2},
{id:2,名称:'n2',val:1},
{id:3,名称:'n2',val:2}
]
让结果=唯一列(val)
console.log(val)
/** 
*期望
*[{id:1,名称:'n1'},{id:2,名称:'n2'},{id:3,名称:'n2'}]
*/
}
我试着看了一下帖子里的各种答案,我终于想出了下面的答案

const uniqueColumns=(val,columns)=>
([…新设置(
val.map(项=>
列。减少((上一列,下一列)=>
({[next]:项[next],…prev}),{})
).map(item=>JSON.stringify(item)))
].map(item=>JSON.parse(item)))
常数val=[
{id:1,名称:'n1',val:1},
{id:1,名称:'n1',val:2},
{id:2,名称:'n2',val:1},
{id:3,名称:'n2',val:2}
]
const result=uniqueColumns(val,['id','name'])

console.log(result)
您可以使用array reduce方法

const val=[
{id:1,名称:“n1”,val:1},
{id:1,名称:“n1”,val:2},
{id:2,名称:“n2”,val:1},
{id:3,名称:“n2”,val:2},
];
const uniqueColumns=(val,columns)=>{
让ret=val.reduce((p,c)=>{
设obj={};
columns.forEach((x)=>(obj[x]=c[x]);
设key=Object.values(obj);
如果(!p[key])p[key]=obj;
返回p;
}, {});
返回Object.values(ret);
};
const result=uniqueColumns(val、[“id”、“name”]);

控制台日志(结果)您可以使用数组缩减方法

const val=[
{id:1,名称:“n1”,val:1},
{id:1,名称:“n1”,val:2},
{id:2,名称:“n2”,val:1},
{id:3,名称:“n2”,val:2},
];
const uniqueColumns=(val,columns)=>{
让ret=val.reduce((p,c)=>{
设obj={};
columns.forEach((x)=>(obj[x]=c[x]);
设key=Object.values(obj);
如果(!p[key])p[key]=obj;
返回p;
}, {});
返回Object.values(ret);
};
const result=uniqueColumns(val、[“id”、“name”]);

控制台日志(结果)
如果我有一个固定的列
id
,我会尝试传递一个动态的列数来确定唯一的条目,比如
uniqueColumns=(val,['academicYearId','classLevelId'])
将返回一个数组,其中包含'academicYearId'和'classLevelId'的唯一组合@Owen Kelvin抱歉,我没有看到它。@Owen Kelvin现在检查一下,让我知道它是否正常。如果我有一个固定的列
id
,我会尝试传递一个动态的列数来确定唯一的条目,比如
uniqueColumns=(val,['academicYearId',classLevelId'])
将返回一个数组,该数组的唯一组合为'academicYearId'和'classLevelId'。Owen Kelvin抱歉,我没有看到它。@Owen Kelvin现在检查一下,让我知道它是否正确。