Javascript:无法基于2个数组中的匹配嵌套值创建数组
我有两个对象数组,我想在文章作者身上做一个匹配,然后推到一个新数组Javascript:无法基于2个数组中的匹配嵌套值创建数组,javascript,arrays,nested,javascript-objects,Javascript,Arrays,Nested,Javascript Objects,我有两个对象数组,我想在文章作者身上做一个匹配,然后推到一个新数组 var result4 = [{ path: "don-t-call-me", details: { articleTitle: "Don’t call me", articleAuthor: "Dave Wood", } }, { path: "diary", details: { articleTitle: "Diary",
var result4 = [{
path: "don-t-call-me",
details: {
articleTitle: "Don’t call me",
articleAuthor: "Dave Wood",
}
},
{
path: "diary",
details: {
articleTitle: "Diary",
articleAuthor: "Alan Johnson",
}
}
}]
var result3 = [{
path: "letters",
letters: 7
},
{
path: "dont-call-me",
details: {
articleTitle: "Don’t call me"
articleAuthor: "Dave Wood",
}
}, {
path: "reduced-to-ashes-and-rubbage",
details: {
articleTitle: "Reduced to rubble",
articleAuthor: "Jack Jones",
}
}, {
path: "diary-for-2018",
details: {
articleTitle: "Diary for 1998",
articleAuthor: "Alan Johnson",
}
}
]
因此,我希望输出是
var newArr1 = [{
path: "don-t-call-me",
details: {
articleTitle: "Don’t call me",
articleAuthor: "Dave Wood",
}
},
{
path: "diary",
details: {
articleTitle: "Diary",
articleAuthor: "Alan Johnson",
}
}
}]
var newArr2 = [
{
path: "dont-call-me",
details: {
articleTitle: "Don’t call me"
articleAuthor: "Dave Wood",
}
}, {
path: "diary-for-2018",
details: {
articleTitle: "Diary for 1998",
articleAuthor: "Alan Johnson",
}
}
]
目前,我仅从每个数组中的每个元素的每个细节对象数组中创建一个集合
var set3 = new Set(result3.map(({ details }) => details));
var set4 = new Set(result4.map(({ details }) => details));
然后使用set.has()创建一个新数组
newArr2的输出是正确的,但newArr1是空的您需要对作者进行更深入的分解
{ details: { articleAuthor } = {} }
因为如果不是,您将为集合
获取对象细节
,并且该值在每个对象中都是唯一的。而且你不会得到文章作者
var result4=[{path:“不要打电话给我”,详细信息:{articletTitle:“不要打电话给我”,articletauthor:“Dave Wood”},{path:“日记”,详细信息:{articletTitle:“日记”,articletauthor:“Alan Johnson”},
结果3=[{path:“信件”,信件:7},{path:“不要打电话给我”,细节:{articleTitle:“不要打电话给我”,articleAuthor:“戴夫·伍德”},{path:“化为灰烬和垃圾”,细节:{articleTitle:“化为瓦砾”,articleAuthor:“杰克·琼斯”},{path:“2018年日记”,细节:{articleTitle:“1998年日记”,articleAuthor:“艾伦·约翰逊”}],
set3=新集合(result3.map({details:{articleAuthor}={}})=>articleAuthor)),
set4=新集合(result4.map({details:{articleAuthor}={}}=>articleAuthor)),
newArr1=result3.filter(({details:{articleAuthor}={}})=>set4.has(articleAuthor)),
newArr2=result4.filter(({details:{articleAuthor}={}})=>set3.has(articleAuthor));
console.log(newArr1);
console.log(newArr2);
log([…set3]);
console.log([…set4]);
.as console wrapper{max height:100%!important;top:0;}
在[…set3]中的未定义的是故意的吗?实际上是的,因为result3
中的第一个对象没有详细对象,只要没有articleouthor
就有未定义的值(没有字符串),那么它应该可以正常工作。@brioshej导致未定义的的对象与数组中的其他对象具有不同的结构,因此设置为3correct@DrumBongo是的,只是想知道这是不是有意的;)
{ details: { articleAuthor } = {} }