javascript - 如何根据给定参数检查(和更新)嵌套数据库中的电影列表?
问题描述
这是一个在嵌套数组/对象上使用循环和条件的练习。这是相当初学者,所以请不要花哨的技术。
鉴于该数据库:
DB = [
{
genre:'thriller',
movies:[
{
title:'the usual suspects', release_date:1999
}
]},
{
genre:'commedy',
movies:[
{
title:'pinapple express', release_date:2008
}
]}
]
我将如何检查一个类型,例如“戏剧”是否在该数据库中并在其中(如果没有,则具有类似的模式,或者如果已经存在则什么都不做?
我此时的功能是:
var moviesDB = function (array, genre) {
for (var i= 0; i < array.legnth; i++) {
if (DB[i].genre != genre) {
DB.genre({genre: genre, movies: []});
}
}
}
我如何为moviesDB(DB,“戏剧”)正确地做到这一点?
解决方案
首先,您要在电影数据库数组中搜索与搜索类型不匹配的任何元素,如果未找到匹配项,则使用具有新类型和空电影数组的新条目创建一个新数组,返回新数组。
我把它写成一个纯函数。
const DB = [
{
genre: 'thriller',
movies: [
{
title: 'the usual suspects',
release_date: '1999'
}
]
},
{
genre: 'comedy',
movies: [
{
title: 'pineapple express',
release_date: '2008'
}
]
}
];
const addMissingGenre = (movieArray, genre) => {
if (movieArray.every(movieGenre => movieGenre.genre !== genre)) {
// create new array and add new genre object, and return
return [...movieArray, { genre, movies: [] }];
}
return movieArray; // return unmutated array
};
console.log(addMissingGenre(DB, 'thriller')); // not added
console.log(addMissingGenre(DB, 'drama')); // added
推荐阅读
- javascript - 如何 jsDoc 原型在整个项目中的可见性?
- scala - 如何在akka流中抛出异常?
- nginx - How do I add the x-forwarded-for field to my access logs for the nginx ingress controller?
- javascript - 动态改变 textarea 元素的高度
- java - 如何在restController中下载excel文件
- laravel - How add new parameter to check in login Laravel
- javascript - Add button to scroll table horizontally?
- javascript - 为什么错误作为第一个参数传递给 nodeJs 中的回调?
- python - Problem with GMM library from sklear.mixture?
- typescript - 带有打字稿的路径映射不适用于黄瓜测试运行器