DEV Community

Cover image for JS object processing functions
Yuri Filatov
Yuri Filatov

Posted on • Edited on • Originally published at andersenlab.com

3 1

JS object processing functions

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!

AWS GenAI LIVE image

Real challenges. Real solutions. Real talk.

From technical discussions to philosophical debates, AWS and AWS Partners examine the impact and evolution of gen AI.

Learn more

Top comments (1)

Collapse
 
larisa00dila profile image
Larisa00dila

ciao

Eliminate Context Switching and Maximize Productivity

Pieces.app

Pieces Copilot is your personalized workflow assistant, working alongside your favorite apps. Ask questions about entire repositories, generate contextualized code, save and reuse useful snippets, and streamline your development process.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay