DEV Community

loading...
Cover image for JS object processing functions

JS object processing functions

filatovv profile image Yuri Filatov Originally published at andersenlab.com Updated on ・2 min read

Let's look on the example of some database:

We have fields "id", "destination" (where to fly), date of creation, author name, hashtags and flight.

var posts = [
    {
        id: '1',
        destination: 'China',
        createdAt: new Date(2014, -1, 1, 2, 3, 4, 567),
        author: 'ChingHang',
        hashTags:['Berlin'],
        flug: 'A-730'
    },
    {
        id: '2',
        destination: 'Italien',
        createdAt: new Date(2014, -1, 1, 2, 3, 4, 567),
        author: 'PetrovPetr',
        hashTags:['Minsk'],
        flug: 'A-733'
    },
    {
        id: '3',
        destination: 'Spanien',
        createdAt: new Date(2017, 0, 1, 2, 3, 4, 567),
        author: 'IvanovaKatya',
        hashTags:['Moskau'],
        flug: 'A-777'
    },
    {
        id: '4',
        destination: 'Griechenland',
        createdAt: new Date(2013, 0, 1, 2, 3, 4, 567),
        author: 'ZaicevVasiliy',
        hashTags:['Riga'],
        flug: 'A-321'
    },
];
Enter fullscreen mode Exit fullscreen mode

The code above - our structure of masses to keep information structured.

Then we make a class, where all functions will be initialized and will be connected with our structure.

class arbeit { 
(functions)
constructor(posts) {
    this._posts=posts;
   } 
 } 
Enter fullscreen mode Exit fullscreen mode

Getting posts with the filter (author)

getPosts(skip=0,top= 10, filterConfig){
        if(filterConfig!=undefined){
            let result = posts.filter(team => team.author === filterConfig.author)
                return result.sort((a, b) => b.createdAt.getTime() - a.createdAt.getTime()).slice(skip,skip+top);
        }
        else {
            return  posts.sort((a, b) => b.createdAt.getTime() - a.createdAt.getTime()).slice(skip,skip+top);
        }
    }
Enter fullscreen mode Exit fullscreen mode

Getting post with id

 getPost(id) {
        for (var i = 0; i < posts.length; i++) {
            if (posts[i].id === id) {
                return posts[i];
            }
        }
        throw "No object with " + id + " id";
    }
Enter fullscreen mode Exit fullscreen mode

Validating object

validatePost(Object){
        return Object.id != null && Object.destination != null && Object.destination.length<400
            && Object.author != null && Object.createdAt != null && typeof Object.id === "string" && typeof Object.destination === "string" && typeof Object.flug === "string"
            && typeof Object.author === "string"

    }
Enter fullscreen mode Exit fullscreen mode

Clearing our "database"

clear(){
        posts.splice(0,posts.length);
    }
Enter fullscreen mode Exit fullscreen mode

Adding a new post

 addPost(Object){
       if(this.validatePost(Object)){
           posts.splice(posts.length,0,Object);
           return true;
       }
       else {
           return false;
       }
    }
Enter fullscreen mode Exit fullscreen mode

Editing post

 editPost(id,post){
        if(this.validatePost(post)){
            this.getPost(id).destination=post.destination;
            this.getPost(id).author=post.author;
            return true;
        }else {
            return false;
        }
    }
Enter fullscreen mode Exit fullscreen mode

Removing post

removePost(id){
        for (var i = 0; i < posts.length; i++) {
            if (posts[i].id === id) {
                return posts.splice(i,1);
            }
        }
        throw "No object with " + id + " id";
    }
Enter fullscreen mode Exit fullscreen mode

Follow me for updates.

Check my website for more information
Good luck in your job!

Discussion (0)

Forem Open with the Forem app