zoukankan      html  css  js  c++  java
  • SimpleTwitter

    function Twitter() {
        this.userMap = new Map()
    };
    
    Twitter.prototype.createUser = function(userId){
        let userObj = {}
        userObj.funs = []
        userObj.msgList = []
        this.userMap.set(userId,userObj)
    }
    
    Twitter.prototype.createTwitter = function(userId, tweetId){
        let msgObj = {}
        msgObj.author = userId
        msgObj.tweetId = tweetId
        msgObj.time = +new Date()
        return msgObj
    }
    
    Twitter.prototype.postTwitter = function(userId, tweetId) {
        if(this.userMap.has(userId)){
            let userObj = this.userMap.get(userId)
            let msgObj = this.createTwitter(userId, tweetId)
            userObj.msgList.unshift(msgObj)
            userObj.funs.map((item)=>{
                let funsObj = this.userMap.get(item)
                funsObj.msgList.unshift(msgObj)
                this.userMap.set(item,funsObj)
            })
        }else{
            this.createUser(userId)
            let msgObj = this.createTwitter(userId,tweetId)
            let userObj = this.userMap.get(userId)
            userObj.msgList.unshift(msgObj)
            this.userMap.set(userId,userObj)
        }
    };
    
    Twitter.prototype.getNewsFeed = function(userId) {
        let newsFeedIDArr = []
        if(this.userMap.has(userId)){
            let userObj = this.userMap.get(userId)
            let newsFeedArr = userObj.msgList.length > 10 ?  userObj.msgList.slice(0,10) :  userObj.msgList
            newsFeedIDArr =  newsFeedArr.map((item)=> {
                return item.tweetId
            })
        }
        return newsFeedIDArr
    };
    
    Twitter.prototype.follow = function(followerId, followeeId) {
        if(!this.userMap.has(followerId)){
            this.createUser(followerId)
        }
        if(!this.userMap.has(followeeId)){
            this.createUser(followeeId)
        }
        let followerIdMsgList = this.userMap.get(followerId).msgList
        let followeeIdMsgList = this.userMap.get(followeeId).msgList
        followerIdMsgList = followerIdMsgList.concat(followeeIdMsgList)
        followerIdMsgList.sort((a,b)=>b.time-a.time)
        let followerIdObj = this.userMap.get(followerId)
        followerIdObj.msgList = followerIdMsgList
        this.userMap.set(followerId,followerIdObj)
    
        let userObj  = this.userMap.get(followeeId)
        userObj.funs.push(followerId)
        this.userMap.set(followeeId,userObj)
    };
    
    Twitter.prototype.unfollow = function(followerId, followeeId) {
        let followeeIdObj  = this.userMap.get(followeeId)
        followeeIdObj.funs = followeeIdObj.funs.filter((item)=>{
            return  item != followerId
        })
        this.userMap.set(followeeId,followeeIdObj)
    
        let followerIdObj = this.userMap.get(followerId)
        let msgList = []
        for(let i = 0;i < followerIdObj.msgList.length;i++){
            let item = followerIdObj.msgList[i]
            if(item.author != followeeId){
                msgList.push(item)
            }
        }
        followerIdObj.msgList = msgList
        this.userMap.set(followerId,followerIdObj)
    };
    

      

  • 相关阅读:
    Algs4-1.1.17找出以下递归函数的问题
    Algs4-1.1.16给出exR1(6)的返回值
    Algs4-1.1.15编写一个静态方法histogram()
    Algs4-1.1.14实现以2为底的对数
    Algs4-1.1.13编写一段代码,打印出一个M行N列的二维数组的转置(交换行和列)
    Algs4-1.1.12以下代码段会打印出什么结果?
    python将一个列表的元素随机打乱
    python 类似java的三目运算符
    java的三元运算符
    java 的Colections类(Java也有python类似列表的反转、排序等方法)
  • 原文地址:https://www.cnblogs.com/zhenjianyu/p/13456886.html
Copyright © 2011-2022 走看看