🖍️
Developer Note
  • Welcome
  • Git
    • Eslint & Prettier & Stylelint & Husky
  • Programming Language
    • JavaScript
      • Script Async vs Defer
      • Module
      • Const VS Let VS Var
      • Promise
      • Event Loop
      • Execution Context
      • Hoisting
      • Closure
      • Event Buddling and Capturing
      • Garbage Collection
      • This
      • Routing
      • Debounce and Throttle
      • Web Component
      • Iterator
      • Syntax
      • String
      • Array
      • Object
      • Proxy & Reflect
      • ProtoType
      • Class
      • Immutability
      • Typeof & Instanceof
      • Npm (Node package manager)
    • TypeScript
      • Utility Type
      • Type vs Interface
      • Any vs Unknown vs Never
      • Void and undefined
      • Strict Mode
      • Namespace
      • Enum
      • Module
      • Generic
    • Python
      • Local Development
      • Uv
      • Asyncio & Event loop
      • Context Manager
      • Iterator & Generator
      • Fast API
      • Pydantic & Data Class
    • Java
      • Compilation and Execution
      • Data Type
      • Enumeration
      • Data Structure
      • Try Catch
      • InputStream and OutputStream
      • Concurrent
      • Unicode Block
      • Build Tools
      • Servlet
      • Java 8
  • Coding Pattern
    • MVC vs MVVM
    • OOP vs Functional
    • Error Handling
    • MVC vs Flux
    • Imperative vs Declarative
    • Design Pattern
  • Web Communication
    • REST API
      • Web Hook
      • CORS issue
    • HTTPS
    • GraphQL
      • REST API vs GraphQL
      • Implementation (NodeJS + React)
    • Server-Sent Event
    • Web Socket
    • IP
    • Domain Name System (DNS)
  • Frontend
    • Progressive Web App (PWA)
    • Single Page & Multiple Page Application
    • Search Engine Optimiaztion (SEO)
    • Web bundling & Micro-frontend
      • Webpack
        • Using Webpack to build React Application
        • Using Webpack to build react library
      • Vite
      • Using rollup to build react library
      • Implementing micro frontend
    • Web Security
      • CSRF & Nonce
      • XSS
      • Click hijacking
    • Cypress
    • CSS
      • Core
        • Box Model
        • Inline vs Block
        • Flexbox & Grid
        • Pseudo Class
        • Position
      • Tailwind CSS
        • Shadcn
      • CSS In JS
        • Material UI
    • React
      • Core
        • Component Pattern
        • React Lazy & Suspense
        • React Portal
        • Error Boundary
        • Rendering Methods
        • Environment Variable
        • Conditional CSS
        • Memo
        • Forward Reference
        • High Order Component (HOC) & Custom Hook
        • TypeScript
      • State Management
        • Redux
        • Recoil
        • Zustand
      • Routing
        • React Router Dom
      • Data Fetching
        • Axios & Hook
        • React Query
        • Orval
      • Table
        • React Table
      • Form & Validation
        • React Hook Form
        • Zod
      • NextJS
        • Page Router
        • App Router
      • React Native
    • Angular
    • Svelte
      • Svelte Kit
  • Backend
    • Cache
      • Browser Cache
      • Web Browser Storage
      • Proxy
      • Redis
    • Rate limit
    • Monitoring
      • Logging
      • Distributed Tracing
    • Load Test
    • Encryption
    • Authentication
      • Password Protection
      • Cookie & Session
      • JSON Web Token
      • SSO
        • OAuth 2.0
        • OpenID Connect (OIDC)
        • SAML
    • Payment
      • Pre-built
      • Custom
    • File Handling
      • Upload & Download (Front-end)
      • Stream & Buffer
    • Microservice
      • API Gateway
      • Service Discovery
      • Load Balancer
      • Circuit Breaker
      • Message Broker
      • BulkHead & Zipkin
    • Elastic Search
    • Database
      • SQL
        • Group By vs Distinct
        • Index
        • N + 1 problem
        • Normalization
        • Foreign Key
        • Relationship
        • Union & Join
        • User Defined Type
      • NOSQL (MongoDB)
      • Transaction
      • Sharding
      • Lock (Concurrency Control)
    • NodeJS
      • NodeJS vs Java Spring
      • ExpressJS
      • NestJS
        • Swagger
        • Class Validator & Validation Pipe
        • Passport (Authentication)
      • Path Module
      • Database Connection
        • Integrating with MYSQL
        • Sequalize
        • Integrating with MongoDB
        • Prisma
        • MikroORM
        • Mongoose
      • Streaming
      • Worker Thread
      • Passport JS
      • JSON Web Token
      • Socket IO
      • Bull MQ
      • Pino (Logging)
      • Yeoman
    • Spring
      • Spring MVC
      • Spring REST
      • Spring Actuator
      • Aspect Oriented Programming (AOP)
      • Controller Advice
      • Filter
      • Interceptor
      • Concurrent
      • Spring Security
      • Spring Boot
      • Spring Cloud
        • Resilience 4j
      • Quartz vs Spring Batch
      • JPA and Hibernate
      • HATEOS
      • Swagger
      • Unit Test (Java Spring)
      • Unit Test (Spring boot)
  • DevOp
    • Docker
    • Kubernetes
      • Helm
    • Nginx
    • File System
    • Cloud
      • AWS
        • EC2 (Virtual Machine)
        • Network
        • IAM
          • Role-Service Binding
        • Database
        • Route 53
        • S3
        • Message Queue
        • Application Service
        • Serverless Framework
        • Data Analysis
        • Machine Learning
        • Monitoring
        • Security
      • Azure
        • Identity
        • Compute Resource
        • Networking
        • Storage
        • Monitoring
      • Google Cloud
        • IAM
          • Workload Identity Federation
        • Compute Engine
        • VPC Network
        • Storage
        • Kubernetes Engine
        • App Engine
        • Cloud function
        • Cloud Run
        • Infra as Code
        • Pub/Sub
    • Deployment Strategy
    • Jenkins
    • Examples
      • Deploy NextJS on GCP
      • Deploy Spring on Azure
      • Deploy React on Azure
  • Domain Knowledge
    • Web 3
      • Blockchain
      • Cryptocurrency
    • AI
      • Prompt
      • Chain & Agent
      • LangChain
      • Chunking
      • Search
      • Side Products
Powered by GitBook
On this page
  • Create Empty Array with sizes
  • Filter and Find
  • Splice
  • For Each and Map
  • Sort
  • Includes
  • Reduce
  • Checking
  • Concat and join
  • Keys and values
  • FlatMap

Was this helpful?

  1. Programming Language
  2. JavaScript

Array

Create Empty Array with sizes

const arr = [...Array(3)];
arr.forEach((val)=>{console.log(val);});
// undefined
// undefined
// undefined

// Generate a sequence of numbers
// Since the array is initialized with `undefined` on each position,
// the value of `v` below will be `undefined`
Array.from({ length: 5 }, (v, i) => i);
// [0, 1, 2, 3, 4]

Filter and Find

  • Get the ideal value based on the condition

  • Find is used to get the first ideal value from the array

  • Filter is used to return new array that is ideal based on the condition

const array1 = [1, 2, 3];

const array2 = array1.find(eachArray=> eachArray > 1);

console.log(array2); //2


const array1 = [5, 12, 8, 130, 44];

const isLargeNumber = (element) => element > 13;

console.log(array1.findIndex(isLargeNumber));
// expected output: 3


const array3 = array1.filter(eachArray => eachArray > 1);

console.log(array3); // [2,3]

console.log(array1); // [1,2,3]

Splice

  • Insert new value into original array on specific position and delete certain number of array on specific location

const array1 = ['a', 'b', 'c'];

array1.splice(3, 0, 'd');

console.log(array1); // abcd

array1.splice(2, 1);

console.log(array1); // abd

array1.splice(0, 2, 'e');

console.log(array1); // ed

For Each and Map

Common

  • Both can use to run void function and have the same output

const array1 = [{id:"test1",number:1}, {id:"test2",number:2}, {id:"test3",number:3}];

array1.map(eacharray=>{console.log(eacharray);});
array1.forEach(eacharray=>{console.log(eacharray);});
// Output:
// > Object { id: "test1", number: 1 }
// > Object { id: "test2", number: 2 }
// > Object { id: "test3", number: 3 }

Difference

  • For Each focus on affecting the original array, while map focus on creating new array

const array1 = [{id:"test1",number:1}, {id:"test2",number:2}, {id:"test3",number:3}];

array1.forEach((element, index) => {return array1[index] = element.id});

array1.map(eacharray=>{console.log(eacharray);});

// Output: 
// test1
// test2
// test3
const array1 = [{id:"test1",number:1}, {id:"test2",number:2}, {id:"test3",number:3}];

const array2 = array1.map(element => element.id);

array1.map(eacharray => {console.log(eacharray);});
// Output: 
// test1
// test2
// test3

Conclusion

  • When doing logic on original array, use for Each

  • When creating new array instead of affecting original array, use map

Sort

var stringArray = ["b","a","e","d"];
// The default is sorted by letter
stringArray.sort();
// a b d e
console.log(stringArray);
var points = [40, 100, 1, 5, 25, 10];
// Sort by number in ascending order
points.sort(function(a, b){return a - b});
// 1 5 10 25 40 100
console.log(points);
// Sort by number in descending order
points.sort(function(a, b){return b - a});
// 100 40 25 10 5 1
console.log(points);

Includes

  • arr.includes(valueToFind , fromIndex) and return boolean

  • if from Index is smaller than 0, for example: -1 . the from Index will be the size of array - 1

const pets = ['cat', 'dog', 'bat','snake'];

console.log(pets.includes('cat'));
// true
console.log(pets.includes('at'));
// false

// [dog,bat,snake]
console.log(pets.includes('cat',1));
// false
console.log(pets.includes('dog',1));
// true

// dog bat,snake
console.log(pets.includes('dog',-3));
// true
console.log(pets.includes('cat',-3));
// false

Reduce

  • Example 1:

 const test = [0, 1, 2, 3, 4].reduce(function(accumulator, currentValue, currentIndex, array) {
  console.log(accumulator, currentValue , currentIndex, array);
  return accumulator + currentValue
})

 console.log(test);

 const test2 = [0, 1, 2, 3, 4].reduce(function(accumulator, currentValue, currentIndex, array) {
  console.log(accumulator, currentValue);
  return accumulator + currentValue
},10)

 console.log(test2);

 //Output: 
// 0 1 1 Array [0, 1, 2, 3, 4]
// 1 2 2 Array [0, 1, 2, 3, 4]
// 3 3 3 Array [0, 1, 2, 3, 4]
// 6 4 4 Array [0, 1, 2, 3, 4]
// 10
// 10 0
// 10 1
// 11 2
// 13 3
// 16 4
// 20
  • Example 2

var names = ['Alice', 'Bob', 'Tiff', 'Bruce', 'Alice'];

var countedNames = names.reduce(function (allNames, name) { 
  if (name in allNames) {
    allNames[name]++;
  }
  else {
    allNames[name] = 1;
  }
  return allNames;
}, {});
// countedNames is:
// { 'Alice': 2, 'Bob': 1, 'Tiff': 1, 'Bruce': 1 }

Checking

const isBelowThreshold = (currentValue) => currentValue < 40;

const array1 = [1, 30, 39, 29, 10, 13];

console.log(array1.every(isBelowThreshold));
// expected output: true

const array = [1, 2, 3, 4, 5];

// checks whether an element is even
const even = (element) => element % 2 === 0;
console.log(array.some(even));
// expected output: true

Concat and join

const array1 = ['a', 'b', 'c'];
const array2 = ['d', 'e', 'f'];
const array3 = array1.concat(array2);

console.log(array3);
// expected output: Array ["a", "b", "c", "d", "e", "f"]

const elements = ['Fire', 'Air', 'Water'];

console.log(elements.join());
// expected output: "Fire,Air,Water"

console.log(elements.join(''));
// expected output: "FireAirWater"

console.log(elements.join('-'));
// expected output: "Fire-Air-Water"

Keys and values

const array1 = ['a', 'b', 'c'];
const iterator = array1.keys();

for (const key of iterator) {
  console.log(key);
}
// expected output: 0
// expected output: 1
// expected output: 2

const array1 = ['a', 'b', 'c'];
const iterator = array1.values();

for (const value of iterator) {
  console.log(value);
}

// expected output: "a"
// expected output: "b"
// expected output: "c"

FlatMap

const arr1 = [1, 2, 3, 4];

arr1.map((x) => [x * 2]);
// [[2], [4], [6], [8]]

arr1.flatMap((x) => x * 2);
// [2, 4, 6, 8]

arr1.flatMap((x) => [x * 2]);
// [2, 4, 6, 8]

// only one level is flattened
arr1.flatMap((x) => [[x * 2]]);
// [[2], [4], [6], [8]]
PreviousStringNextObject

Last updated 7 months ago

Was this helpful?