Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.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_Javascript_Json - Fatal编程技术网

从现有嵌套值创建新数组-Javascript

从现有嵌套值创建新数组-Javascript,javascript,json,Javascript,Json,我有以下数组: [ { "publication": "" }, { "publication": [ { "author": "Author of Paper", "journal": "Journal of Paper", "title": "Title of Paper" }, { "author": "Author Paper", "journal": "Jour

我有以下数组:

 [ 
   { "publication": "" }, 
   { "publication": [ 
       { "author": "Author of Paper", 
         "journal": "Journal of Paper", 
         "title": "Title of Paper" 
       }, 
       { "author": "Author Paper", 
         "journal": "Journal Paper", 
         "title": "Title Paper" } ] }, 
   { "publication": "" }
 ]
我想丢弃空条目,并使用以下输出将所有条目推送到一个新数组中

[
1: {
"author": "Author of Paper",
"title": "Title of Paper"
"journal": "Journal of Paper"
},
2: {
"author": "Author of Paper",
"title": "Title of Paper"
"journal": "Journal of Paper"
}
]
我将如何实现这一点

我尝试了以下几点:

     var container = {};
     users = users.map(function(obj) {

 for(i = 0; i < publications.length; ++i) {
 container[i] 
         = { 
            "author": obj.author,
            "title": obj.title,
             "journal": obj.journal,
           }; 
}
var容器={};
users=users.map(函数(obj){
对于(i=0;i<0.length;++i){
货柜[i]
= { 
“作者”:obj.author,
“标题”:对象标题,
“日志”:obj.journal,
}; 
}
您可以使用。在reduce内部,首先检查值是否真实,而不是仅将其添加到最终输出

let arr=[{“出版物”:“},{“出版物”:[{“作者”:“论文作者”,“期刊”:“论文期刊”,“标题”:“论文标题”},{“作者”:“作者论文”,“期刊”:“期刊论文”,“标题”:“论文标题”},{“出版物”:“}]
让输出=arr.reduce((op,{publication})=>{
国际单项体育联合会(出版物){
op.push(…发布)
}
返回操作
},[])

console.log(output)
您可以使用即将发布的命令来替换falsy值

var数组=[{出版物:'},{出版物:[{作者:“论文作者”,期刊:“论文杂志”,标题:“论文标题”},{作者:“作者论文”,期刊:“期刊论文”,标题:“论文标题”}]},{出版物:'},
result=array.flatMap(({publication})=>publication | |[]);
console.log(结果);
.as控制台包装{最大高度:100%!重要;顶部:0;}
解决方案


您想要的结果用无效的JavaScript语法表示。
[/*....*/].reduce((acc, {publication}) => acc.includes(publication) ?  acc : [...acc, publication], [])