Javascript 仅返回唯一元素的嵌套数组筛选器

Javascript 仅返回唯一元素的嵌套数组筛选器,javascript,arrays,reactjs,Javascript,Arrays,Reactjs,输出: { list: [ { "distance": 1.87, "age": "", languageCodes: [ { "code": "RUS", "desc": "Russian" } ] }, { "distance": 1.87, "age": "", languageCodes: [

输出:

{
  list: [
    {
      "distance": 1.87,
      "age": "",
      languageCodes: [
        {
          "code": "RUS",
          "desc": "Russian"
        }
      ]
    },
    {
      "distance": 1.87,
      "age": "",
      languageCodes: [
        {
          "code": "RUS",
          "desc": "Russian"
        }
      ]
    },
    {
      "distance": 1.87,
      "age": "",
      languageCodes: [
        {
          "code": "IND",
          "desc": "Indian"
        }
      ]
    },
    {
      "distance": 1.87,
      "age": "",
      languageCodes: [
        {
          "code": "USA",
          "desc": "American"
        }
      ]
    },
    {
      "distance": 1.87,
      "age": "",
      languageCodes: [
        {
          "code": "AUS",
          "desc": "Australian"
        }
      ]
    },
    {
      "distance": 1.87,
      "age": "",
      languageCodes: [
        {
          "code": "JPN",
          "desc": "Japan"
        }
      ]
    },
    {
      "distance": 1.87,
      "age": "",
      languageCodes: [
        {
          "code": "RUS",
          "desc": "Russian"
        }
      ]
    },
    {
      "distance": 1.87,
      "age": "",
      languageCodes: [
        {
          "code": "IND",
          "desc": "Indian"
        }
      ]
    },
    {
      "distance": 1.87,
      "age": "",
      languageCodes: [
        {
          "code": "RUS",
          "desc": "Russian"
        }
      ]
    }
  ]
}
我有一个嵌套数组,它表示语言代码

列表数组包含各种对象,其中语言代码显示在代码段中。languageCodes数组包含代码和desc,它们也显示在代码段中。 所以这里我的要求是过滤数组,输出就像输出中显示的唯一languageCodes数组一样

您可以与和组合使用

const obj={
名单:[{
“距离”:1.87,
“年龄”:“,
语言代码:[{
“代码”:“RUS”,
“描述”:“俄语”
}]
},
{
“距离”:1.87,
“年龄”:“,
语言代码:[{
“代码”:“RUS”,
“描述”:“俄语”
}]
},
{
“距离”:1.87,
“年龄”:“,
语言代码:[{
“代码”:“IND”,
“描述”:“印第安人”
}]
},
{
“距离”:1.87,
“年龄”:“,
语言代码:[{
“代码”:“美国”,
“描述”:“美国”
}]
},
{
“距离”:1.87,
“年龄”:“,
语言代码:[{
“代码”:“澳大利亚”,
“描述”:“澳大利亚”
}]
},
{
“距离”:1.87,
“年龄”:“,
语言代码:[{
“代码”:“JPN”,
“desc”:“日本”
}]
},
{
“距离”:1.87,
“年龄”:“,
语言代码:[{
“代码”:“RUS”,
“描述”:“俄语”
}]
},
{
“距离”:1.87,
“年龄”:“,
语言代码:[{
“代码”:“IND”,
“描述”:“印第安人”
}]
},
{
“距离”:1.87,
“年龄”:“,
语言代码:[{
“代码”:“RUS”,
“描述”:“俄语”
}]
}
]
};
常量输出=对象列表减少((acc,元素)=>{
for(让lang of element.languageCodes){
如果(!acc.find(l=>l.code==lang.code)){
acc.push(朗);
}
}
返回acc;
}, []);

console.log(“输出”,output)使用
flatMap
filter

const myObj={list:[{“距离”:1.87,“年龄”:“,”语言代码:[{“代码”:“RUS”,“desc”:“俄语”},{“距离”:1.87,“年龄”:“,”语言代码:[{“代码”:“RUS”,“desc”:“俄语”}},{“距离”:1.87,“年龄”:“,”语言代码:[{“代码”:“IND”,“desc”:“印第安{“距离”:1.87,“年龄”:“,”语言代码:[{“代码”:“澳大利亚”,“描述”:“澳大利亚”}],{“距离”:1.87,“年龄”:“,”语言代码:[{“代码”:“日本”}],{“距离”:1.87,“年龄”:“,”语言代码:[{“代码”:“俄罗斯”;“描述”:“俄罗斯”}],{“距离”:1.87,“年龄”:“,”语言代码:[{“代码”:“印度”},{“距离”:“印度”}],{“年龄”:,语言代码:[{“代码”:“RUS”,“desc”:“俄语”}]}]};
const LanguageCodes=myObj.list.flatMap(obj=>obj.LanguageCodes).filter((e,i,a)=>a.findIndex(({code,desc})=>code==e.code&&desc==e.desc)==i);
console.log(语言代码)
.as控制台包装{max height:100%!重要;top:auto;}
试试看

//const arr=inputObj.list;
常数arr=[
{
“距离”:1.87,
“年龄”:“,
语言代码:[
{
‘代码’:‘RUS’,
“desc”:“俄语”,
},
],
},
{
“距离”:1.87,
“年龄”:“,
语言代码:[
{
‘代码’:‘RUS’,
“desc”:“俄语”,
},
],
},
{
“距离”:1.87,
“年龄”:“,
语言代码:[
{
“代码”:“IND”,
“描述”:“印第安人”,
},
],
},
{
“距离”:1.87,
“年龄”:“,
语言代码:[
{
“代码”:“美国”,
“描述”:“美国人”,
},
],
},
{
“距离”:1.87,
“年龄”:“,
语言代码:[
{
'代码':'澳大利亚',
“描述”:“澳大利亚人”,
},
],
},
{
“距离”:1.87,
“年龄”:“,
语言代码:[
{
‘代码’:‘JPN’,
"desc":"Japan",,
},
],
},
{
“距离”:1.87,
“年龄”:“,
语言代码:[
{
‘代码’:‘RUS’,
“desc”:“俄语”,
},
],
},
{
“距离”:1.87,
“年龄”:“,
语言代码:[
{
“代码”:“IND”,
“描述”:“印第安人”,
},
],
},
{
“距离”:1.87,
“年龄”:“,
语言代码:[
{
‘代码’:‘RUS’,
“desc”:“俄语”,
},
],
},
];
常量uniqueLanguageCodes=arr.reduce((累计,当前)=>{
current.languageCodes.forEach(codeObj=>{
如果(!accum.some(accumElement=>accumElement.code===codeObj.code)){
累计推力(codeObj);
}
});
返回累计;
}, []);
console.log(uniqueLanguageCodes)
您可以使用并拉出
code
desc
以获得唯一值

var data={list:[{distance:1.87,age:,languagecode:[{code:RUS,desc:RUS}],{distance:1.87,age:,languagecode:[{code:RUS,desc:RUS}},{distance:1.87,age:,languagecode:[{code:IND,desc:Indian}],{distance:1.87,age:,languagecode:[{code:USA,desc American}],距离:1.87,年龄:,,语言代码:[{代码:“澳大利亚”,描述:“澳大利亚”}},{距离:1.87,年龄:,,语言代码:[{代码:“日本”}},{距离:1.87,年龄:,,语言代码:[{代码:“俄罗斯”,描述:“俄罗斯”},{距离:1.87,年龄:,,语言代码:[{代码:“印度”},{距离:1.87,年龄:“,语言代码:[{code:“RUS”,desc:“俄语”}]},
结果=数组.from(data.list
.减少(
(m,{languageCodes:{0:{code,desc}}}})=>m.set(code,{code,desc}),
新地图
)
.values()
);
console.log(结果);

.as console wrapper{max height:100%!important;top:0;}
您可以使用将所有
语言代码
获取到单个数组中。然后,使用和获取唯一的语言

const input={list:[{距离:
Array LanguageCodes[
  {
    "code": "RUS",
    "desc": "Russian"
  },
  {
    "code": "IND",
    "desc": "Indian"
  },
  {
    "code": "USA",
    "desc": "American"
  },
  {
    "code": "AUS",
    "desc": "Australian"
  },
  {
    "code": "JPN",
    "desc": "Japan"
  }
]