Javascript 根据动态传递的属性从对象数组中获取唯一值
在这个场景中,我需要根据动态传递的属性获取所有对象的唯一值。我尝试过以下方法,但似乎不起作用Javascript 根据动态传递的属性从对象数组中获取唯一值,javascript,typescript,ecmascript-6,Javascript,Typescript,Ecmascript 6,在这个场景中,我需要根据动态传递的属性获取所有对象的唯一值。我尝试过以下方法,但似乎不起作用 var arr = [ { id: "1", type: "x", source: { val1: "3", val2: "4", val3: "6", }, }, { id: "1", type: "x", source: { val1: "3", val2: "4",
var arr = [
{
id: "1",
type: "x",
source: {
val1: "3",
val2: "4",
val3: "6",
},
},
{
id: "1",
type: "x",
source: {
val1: "3",
val2: "4",
val3: "6",
},
},
{
id: "1",
type: "x",
source: {
val1: "4",
val2: "5",
val3: "6",
}
}
];
现在假设我通过val1,它应该给我唯一的值3,4,如果我通过val2,它应该给我4,5。
注意:我将只传递源属性中存在的参数
我尝试过的方法:
calculate = (param) =>
{
let uniqueValues = Array.from(
new Set(arr.map((arr: any) => arr[param]))
);
}
看起来,您还需要
source
属性
new Set(arr.map((o: any) => o.source[param]))
您可以使用
map
获取源值,然后减少
inque值:
const arr=[
{
id:“1”,
键入:“x”,
资料来源:{
val1:“3”,
val2:“4”,
val3:“6”,
},
},
{
id:“1”,
键入:“x”,
资料来源:{
val1:“3”,
val2:“4”,
val3:“6”,
},
},
{
id:“1”,
键入:“x”,
资料来源:{
val1:“4”,
val2:“5”,
val3:“6”,
}
}
];
函数计算(数据,参数){
返回data.map(x=>{
返回(x.source |{})[param];
}).减少((acc,val)=>{
如果(附件索引值(val)=-1)
加速推力(val);
返回acc;
}, []);
}
控制台日志(计算(arr,“val1”);
控制台日志(计算(arr,“val2”)代码>数据的结构将始终相同,也可以不同。