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允许我们同时访问属性值并将其分配给变量。