从现有嵌套值创建新数组-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], [])