Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript:无法基于2个数组中的匹配嵌套值创建数组_Javascript_Arrays_Nested_Javascript Objects - Fatal编程技术网

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 } = {} }