简体   繁体   English

获取对象数组中每个用户的点赞总数 - JavaScript

[英]Get total number of likes for each user in an array of objects - JavaScript

So I'm stuck with a logical problem.所以我遇到了一个逻辑问题。 I'm trying to figure out a way of getting total number of likes for each user in an array of objects.我试图找出一种方法来获取对象数组中每个用户的喜欢总数。 Here is my Sample array.这是我的示例数组。

const articles = [{
  authorId: "2vP3i2rYvDYPrikE1k1DTaZDeoq1",
  dislikes: 0,
  likes: 3,
  neutral: 0,
  text: "This is Mike Alice's first Shot!!",
  username: "mikealice",
  id: "NMFGbeTvSYddsr7VzjFV",
},
 {
  authorId: "2vP3i2rYvDYPrikE1k1DTaZDeoq1",
  dislikes: 0,
  likes: 2,
  neutral: 0,
  text: "This is Mike Alice's second Shot!!",
  username: "mikealice",
  id: "NMFGbeTvSYddsr7VzjFV",
},
 {
  authorId: "2vP3i2rYvDYPrikE1k1klkDTaZDeoq1",
  dislikes: 0,
  likes: 1,
  neutral: 0,
  text: "This is admin's first Shot!!",
  username: "admin",
  id: "NMFGbeTvSYddsr7VzjFV",
},
 {
  authorId: "2vP3i2rYvDYPrikE1k1klkDTaZDeoq1",
  dislikes: 0,
  likes: 3,
  neutral: 0,
  text: "This is admin's second Shot!!",
  username: "admin",
  id: "NMFGbeTvSYddsr7VzjFV",
}]

My goal is to have a final list of of distinct username with their total likes like the one bellow.我的目标是有一个不同用户名的最终列表,他们的总喜欢如下一个。

const userLikes = [
  {
  username: 'mikealice',
  totalLikes: 5
  },
  {
  username: 'admin',
  totalLikes: 4
  }
]

Help me figure out the logic to solving this problem.帮我找出解决这个问题的逻辑。 Thanks.谢谢。

  1. Take an empty object, say obj拿一个空物体,说obj
  2. Loop through your array循环遍历你的array
  3. On every loop, check for if obj has already a key same as the current username在每个循环中,检查obj是否已经有一个与当前username相同的键
  4. If not then, create a key value pair, key would be the username , value would be another object containing username and totalLikes如果没有,则创建一个键值对,键将是username ,值将是另一个包含usernametotalLikes object
  5. If there is already a key same as username , increase the value of totalLikes with current likes如果已经有一个与username相同的键, totalLikes使用当前likes增加totalLikes的值
  6. After the loop is finished, you will have your answer, but in a dictionary / object form循环完成后,您将得到答案,但以dictionary / object形式
  7. Object.values will bring out the desired array Object.values将带出所需的array

Code -代码 -

 let obj = {} articles.forEach((article, index) => { let { username, likes } = article if (!obj[username]) { obj[username] = { username, totalLikes: likes } } else { let { totalLikes } = obj[username] obj[username].totalLikes = totalLikes + likes } }) let finalArray = Object.values(obj)

Using reduce and Object.values will simplify.使用reduceObject.values会简化。

 const getTotalLikes = arr => Object.values( arr.reduce((acc, { username, likes }) => { acc[username] = username in acc ? { username, totalLikes: acc[username].totalLikes + likes } : { username, totalLikes: likes }; return acc; }, {}) ); const articles = [ { authorId: "2vP3i2rYvDYPrikE1k1DTaZDeoq1", dislikes: 0, likes: 3, neutral: 0, text: "This is Mike Alice's first Shot!!", username: "mikealice", id: "NMFGbeTvSYddsr7VzjFV" }, { authorId: "2vP3i2rYvDYPrikE1k1DTaZDeoq1", dislikes: 0, likes: 2, neutral: 0, text: "This is Mike Alice's second Shot!!", username: "mikealice", id: "NMFGbeTvSYddsr7VzjFV" }, { authorId: "2vP3i2rYvDYPrikE1k1klkDTaZDeoq1", dislikes: 0, likes: 1, neutral: 0, text: "This is admin's first Shot!!", username: "admin", id: "NMFGbeTvSYddsr7VzjFV" }, { authorId: "2vP3i2rYvDYPrikE1k1klkDTaZDeoq1", dislikes: 0, likes: 3, neutral: 0, text: "This is admin's second Shot!!", username: "admin", id: "NMFGbeTvSYddsr7VzjFV" } ]; console.log(getTotalLikes(articles));

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 从每个对象数组中乘以 2 个值,然后将相加的数字相加以获得 Reactjs/Javascript 中的总数 - multiply 2 value from each array of objects then add the multiplied numbers to get a total number in Reactjs/Javascript 获取JavaScript中相同对象的总数 - Get total number of same objects in javascript 如何获取JavaScript对象数组中的总值 - How to get total of values in array of javascript objects 如何在Javascript中获取数组中变量的总数? - How to get total number of variables in an array in Javascript? 如何获取在javascript中为一个类创建的对象总数? - How to get the total number of objects created in javascript for a class? 获取使用JavaScript FQL的用户的喜欢列表? - Get list of Likes of a user using javascript FQL? Facebook javascript sdk获取用户的好友总数 - Facebook javascript sdk get the total number of friends of a user Javascript-从对象列表中获取最大数量,每个对象的属性均为数字 - Javascript - Get max number from list of objects, each with a property that is a number 从数组的总长度中减去并得到一个干净的数字[Javascript] - Subtract and get a clean number from the total length of the array [Javascript] 计算孩子总数和对象总数并分成不同的数组 - count total number of children and the total number of objects and split into different array
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM