Javascript 如何将参数推入多嵌套数组/对象结构?

Javascript 如何将参数推入多嵌套数组/对象结构?,javascript,arrays,loops,object,conditional-statements,Javascript,Arrays,Loops,Object,Conditional Statements,给定以下数据库 DB = [ { genre:'thriller', movies:[ { title:'the usual suspects', release_date:1999 } ]}, { genre:'commedy', movies:[ {

给定以下数据库

DB = [
    {
        genre:'thriller', 
        movies:[
            {
                title:'the usual suspects', release_date:1999
            }
        ]},
        {
        genre:'commedy', 
        movies:[
            {
                title:'pinapple express', release_date:2008
            }
        ]}
]
我想检查其中是否存在流派和电影,如果没有,则添加

到目前为止,我有这个代码。唯一缺少的是,如果电影不存在(注释掉并加粗),则在类型索引中推送(新)电影


我将用下面的代码来解决这个问题,代码简单易懂,可读性好,没有代码,对于一个还没有太多经验的人来说,它可能是“奇怪的”

首先,您可以循环对象以检查每个
类型
,如果其中一个与您尝试插入的类型匹配,则“选择”保存此类型的对象。如果未找到流派,则创建一个新对象

在拥有保存该类型的对象(新的或已经存在的对象)后,开始循环浏览该类型的电影,执行与对该类型的检查相同的检查,但如果找到电影
标题
,则只需返回一些内容,并且不要将电影推送到
电影
列表。如果找不到,则按它

看看下面,看看代码是否可以理解(我在代码中添加了一些注释)

let DB=[{
类型:《惊悚片》,
电影:[{
标题:"惯常疑犯",,
发布日期:1999年
}]
},
{
类型:“commedy”,
电影:[{
标题:“苹果快车”,
发布日期:2008
}]
}
]
var moviesDB=函数(数组、类型、电影){
让selectedObj=null;
//如果存在,让我们来寻找流派
for(设i=0;ilog(DB)
我会用下面的代码来解决这个问题,这些代码简单易懂,可读性强,没有一些代码对于一个还没有太多经验的人来说可能是“奇怪的”

首先,您可以循环对象以检查每个
类型
,如果其中一个与您尝试插入的类型匹配,则“选择”保存此类型的对象。如果未找到流派,则创建一个新对象

在拥有保存该类型的对象(新的或已经存在的对象)后,开始循环浏览该类型的电影,执行与对该类型的检查相同的检查,但如果找到电影
标题
,则只需返回一些内容,并且不要将电影推送到
电影
列表。如果找不到,则按它

看看下面,看看代码是否可以理解(我在代码中添加了一些注释)

let DB=[{
类型:《惊悚片》,
电影:[{
标题:"惯常疑犯",,
发布日期:1999年
}]
},
{
类型:“commedy”,
电影:[{
标题:“苹果快车”,
发布日期:2008
}]
}
]
var moviesDB=函数(数组、类型、电影){
让selectedObj=null;
//如果存在,让我们来寻找流派
for(设i=0;ilog(DB)
您需要简化您的数据库-代码和数据库必须大大简化

let DB={
《惊悚片》:{
电影:[{
标题:"惯常疑犯",,
发布日期:1999年
}]
},
“喜剧”:{
电影:[{
标题:“苹果快车”,
发布日期:2008
}]
}
}
var moviesDB=函数(数组、类型、标题、版本){
设g=DB[genre]
如果(!g)DB[genre]={
“电影”:[]
}
movies=DB[genre]。电影
康斯特电影={
“头衔”:头衔,
“发布日期”:发布
}
让obj=movies.find(o=>o.title==movie.title);
如果(!obj){
电影。推送(电影)
}否则{
return`电影${movie.title}已在数据库中`
}  
返回分贝;
}
moviesDB(DB,“戏剧”,“戏剧电影”,2019年)
moviesDB(DB,“戏剧”,“戏剧电影”,2019年)
moviesDB(DB,“惊悚片”,“惊悚片”,2019年)

log(DB)
您需要简化您的数据库-代码和数据库必须大大简化

let DB={
《惊悚片》:{
电影:[{
标题:"惯常疑犯",,
发布日期:1999年
}]
},
“喜剧”:{
电影:[{
标题:“苹果快车”,
发布日期:2008
}]
}
}
var moviesDB=函数(数组、类型、标题、版本){
设g=DB[genre]
如果(!g)DB[genre]={
var moviesDB = function (array, genre, movie) {
    var x = []

    for (var i = 0; i < DB.length; i++) {
        x.push(DB[i].genre);
    }

    if(x.includes(genre) == false) {
        DB.push({genre: genre, movies: []});    
    } else {
        console.log("genre already here")
    }

    var y = []

    for (var i = 0; i < DB.length; i++) {
        DB[i].movies.forEach (function (object){
            y.push(object.title)
        })
    }

    if(y.includes(movie) == false) {
        //**push movie into the existing object.**
    } else {
        return `the movie the ${movie} is already in the database!`
    }

    return DB;
}
if(y.includes(movie) == false) {
        //**push movie into the existing object.**
      DB.forEach(v => {
        if(v.genre === genre){
          v.movies.push({title: movie})
        }
      })
    }