我有两个对象数组,
let list = [
{
"currency": "Albania Lek",
"abbreviation": "ALL",
},
{
"currency": "Afghanistan Afghani",
"abbreviation": "AFN",
},
{
"currency": "Argentina Peso",
"abbreviation": "ARS",
}];
let c = [
{
"value": "AFN"
},
{
"value": "ARS"
}]
let asd = list.filter(l=>{
return l.abbreviation === c.forEach(x=>x.sCurrencyName)
})
我只想返回list
中在对象数组c
中具有值的那些对象
答案 0 :(得分:0)
您可以将.filter()
与.some()
方法一起使用:
let list = [
{"currency": "Albania Lek", "abbreviation": "ALL"},
{"currency": "Afghanistan Afghani", "abbreviation": "AFN"},
{"currency": "Argentina Peso", "abbreviation": "ARS"}
];
let c = [{"value": "AFN"}, {"value": "ARS"}];
let result = list.filter(
({ abbreviation }) => c.some(({ value }) => value === abbreviation)
);
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
答案 1 :(得分:0)
forEach
不会返回可以使用的值。因此,当您写l.abbreviation === c.forEach...
时,===
标记的右边没有任何内容。
一个简单的解决方案是使用Array#some
函数。该函数根据指定的条件返回一个布尔值,这就是您在这里需要的。
因此您的代码变为
let asd = list.filter(litem => c.some(citem => citem.value === litem.abbreviation))
您可以阅读有关{@ {3}}数组上可用的所有不同方法的更多信息