Javascript Js根据嵌套对象筛选出项目

Javascript Js根据嵌套对象筛选出项目,javascript,arrays,Javascript,Arrays,我有一个结果数组,我想修改它。 我想从每个项目中删除排除语言的字段 最后,我想过滤掉任何带有空语言数组的结果(修改后) 我尝试过这段代码,但在第一次修改后,我得到了filteredPairs==undefined filteredPairs = filteredPairs.forEach(item => item.result.name .map(langPair => { if (!negLanguagesParam.includes(langPair["@l

我有一个结果数组,我想修改它。 我想从每个项目中删除
排除语言的字段

最后,我想过滤掉任何带有空语言数组的结果(修改后)

我尝试过这段代码,但在第一次修改后,我得到了
filteredPairs==undefined

filteredPairs = filteredPairs.forEach(item => item.result.name
  .map(langPair => {
    if (!negLanguagesParam.includes(langPair["@language"])) {
      return langPair;
    }
    return null;
  }));
filteredPairs = filteredPairs.filter(item => item.result.name.length == 0);
最初的
filteredPairs!=未定义

filteredPairs = filteredPairs.forEach(item => item.result.name
  .map(langPair => {
    if (!negLanguagesParam.includes(langPair["@language"])) {
      return langPair;
    }
    return null;
  }));
filteredPairs = filteredPairs.filter(item => item.result.name.length == 0);
数据样本:


下面是一个示例,使用
.filter()
调用
.map()
对嵌套的
结果.name
数组进行初始筛选。然后使用最后一个
.filter()
调用对返回的数组进行过滤,以检查是否存在空数组

const negLanguagesParam=['it'];
常量filteredInput=输入
.map(({item,result})=>({
…项目,
结果:{
…结果,
名称:result.name
.filter(({'@language':lang})=>!negLanguagesParam.includes(lang))
}
}))
.filter(({result:{name}})=>name.length);
log(JSON.stringify(filteredInput,null,2))
。作为控制台包装{最大高度:100%!重要;顶部:0;}

常量输入=[
{
结果:{
姓名:[
{@language':'en'},
{@language':'it'}
]
}
},
{
结果:{
姓名:[
{@language':'it'}
]
}
}
];

您能提供输入数据吗?A?
forEach
返回undefined,您将在第一步中将其分配给
filteredPairs
line@pilchard如何重写它?您需要top提供示例数据,但最好使用
map()
而不是
forEach()
@pilchard add。以前尝试过“映射”,但我不知道如何迭代“name”数组,同时返回更高级别的项。您能解释一下这个语法吗
.map({item,result})=>({…item,
map一个新构造的对象?还有
…item
dots语法的意思是什么?
…item
是扩展的,或者将
item
对象的属性复制到一个新对象中。
({item,result})的声明=>..
is允许我们同时访问属性值并将其分配给变量。