Commonly used Javascript Array Methods.
Tags: javascript, beginners, programming, tutorial
Published: 2024-07-17 15:13:50

In this post we will learn about commonly used Javascript array methods that uses iteration and callback function to archieve their functionality. 

iteration refers to repeated execution of a set of statements or code blocks, which allows us to perform the same operation multiple times.

In simple terms, A callback is a function definition passed as an argument to another function.

To keep things simple, we will focus on these three point.

1. When a particular array method should be used.
2. What the array method returns.
3. code example of the array method. **

Before we proceed let's understand how these array methods are structured.

`// Array method(callback(the condition we want to execute on each  item in our array))`

Each of these array method is a function that recieves a callback  as an argument, it is in this callback  that we specify the conditions we want to execute on each of our array item.

We will be using this array of objects for our examples.

`const data = [
  {
    "userId": 1,
    "username": "Francis",
    "message": "Hey, how's it going?",
    "timestamp": "2024-02-18T12:30:00Z",
    "status": "online",
    "messageSent": 28,
    "role": "user",
    "passCode": "293087O7764"

  },
  {
    "userId": 2,
    "username": "Moses",
    "message": "Not bad, just working on a project.",
    "timestamp": "2024-02-18T12:35:00Z",
    "status": "away",
    "messageSent": 74,
    "role": "user",
    "passCode": "675147O2234"
  },
  {
    "userId": 3,
    "username": "Vicky",
    "message": "Hey folks! What's the latest gossip?",
    "timestamp": "2024-02-18T12:40:00Z",
    "status": "online",
    "messageSent": 271,
    "role": "moderator",
    "passCode": "76352O8069"

  },
  {
    "userId": 4,
    "username": "Junior",
    "message": "Not much, just chilling. How about you?",
    "timestamp": "2024-02-18T12:45:00Z",
    "status": "offline",
    "messageSent": 125,
    "role": "admin",
    "passCode": "21876O3483"
  }
]`


**forEach:** forEach is used when we want to execute a condition on all of our array items. forEach returns undefined.

`function getMessageSent(users){
  let sumMessageSent = 0;
  users.forEach(function(user){
    sumMessageSent += user.messageSent;
  })  
  return sumMessageSent;
}
getMessageSent(data) // output: 498
` 

**reduce:** reduce is used to reduce an array to a single value for example this array [8, 7, 3] can be reduced to the number 18. a reducer returns a single value.

The reducer function takes in two parameters first the reducer( which is made of the total and the current) and second the initialValue

The total : this is popularly called the accumulator. the total as i call it is the last computed value of the reducer function.

The current refers to a single array item. in our case we have four items(current).

The initialValue is the value we assign to the total on the first call. simply say the initalValue is the default value of the total


`const getMessageSent = (users) => {
   return users.reduce((total, current) => total += current.messageSent, 0)
}`

getMessageSent(data) // output: 498

**filter:** Array.filter is used when we want to collect only items in the array that meet a specific condition. array.filter returns an array.

`const onlineUsers = (users) => {
   return users.filter(user => user.status === "online")
}`

onlineUsers(data)  // output: [object object]

**find** Array.find is used when we want to get only the first array Item that meet the condition defined inside the callback. array.find returns the first item NOT in an array but in the format of the item, in our case that will be an object or undefined if no match was found.

`const getUserRole = (users) => {
return users.find(user => user.role === "user")
}`

getUserRole(data) // output: {userId: 1, username: 'Francis', message: "Hey, how's it going?", timestamp: '2024-02-18T12:30:00Z', status: 'online', …} 

Notice how only the first user that meets the conditon was returned.

**map** Array.map is used when we want to transform the items in the array. array.map returns an array of transformed items that satisfy the condition in our callback.

`const getUserNameAndPass = (users) => {
  return users.map((user) => {
    const userPassCode = user.passCode.slice(-4);
    return `${user.username}  ${userPassCode.padStart(
      user.passCode.length,
      "★"
    )}`;
  });
};`

getUserNameAndPass(data)// output:['Francis  ★★★★★★★7764', 'Moses  ★★★★★★★2234', 'Vicky  ★★★★★★8069', 'Junior  ★★★★★★3483']

**every** array.every is used when we want check if all the array items passed our defined condition. array.every returns a boolean. true if all the items pass the condition and false if any of the items fail the condition.

const isOnline = data.every(user => dataItem.status === 'online')

console.log(isOnline) // output:false

**Some** array.some is used when we want to check that some of  the array items pass a givin condition. array.some return a boolean. true if some of the items passed the condition and false if all of the item pass or fail.

`const isOnline = data.every(user => dataItem.status === 'online')`

console.log(isOnline) // output: true

These are some of the widly used array methods.