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;i log(DB)
我会用下面的代码来解决这个问题,这些代码简单易懂,可读性强,没有一些代码对于一个还没有太多经验的人来说可能是“奇怪的”
首先,您可以循环对象以检查每个类型
,如果其中一个与您尝试插入的类型匹配,则“选择”保存此类型的对象。如果未找到流派,则创建一个新对象
在拥有保存该类型的对象(新的或已经存在的对象)后,开始循环浏览该类型的电影,执行与对该类型的检查相同的检查,但如果找到电影标题
,则只需返回一些内容,并且不要将电影推送到电影
列表。如果找不到,则按它
看看下面,看看代码是否可以理解(我在代码中添加了一些注释)
let DB=[{
类型:《惊悚片》,
电影:[{
标题:"惯常疑犯",,
发布日期:1999年
}]
},
{
类型:“commedy”,
电影:[{
标题:“苹果快车”,
发布日期:2008
}]
}
]
var moviesDB=函数(数组、类型、电影){
让selectedObj=null;
//如果存在,让我们来寻找流派
for(设i=0;i log(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})
}
})
}