반응형
snowman95
코딩수련장
snowman95
전체 방문자
오늘
어제
  • 분류 전체보기 (229)
    • 앱테크 (3)
    • 옵시디언 (5)
    • 드라마, 영화 (1)
    • 개발자 이야기 (23)
    • 프로젝트 (10)
      • 프로젝트 방법론 (7)
      • 프로젝트 기록 (2)
      • Github (1)
    • 개발 지식 (0)
      • 디자인 패턴 (0)
    • 프론트엔드 개발 (5)
      • 테크트리 (2)
      • React.js (19)
      • ReactNative (2)
      • Next.js (6)
      • GraphQL (6)
      • 패키지 매니저 (2)
      • 라이브러리 (3)
      • 상태관리 라이브러리 (4)
      • Web 지식 (3)
      • HTML CSS (26)
      • Javascript (16)
      • 도구 (Tool) (3)
      • 성능 최적화 (1)
      • 디자인시스템 (0)
    • Python (53)
      • 모음집 (1)
      • 문법 (12)
      • 라이브러리 (15)
      • 알고리즘 (10)
      • 백준 문제풀이 (9)
      • 코딩테스트 (2)
      • 도구 (Tool) (3)
    • C++ (20)
      • 알고리즘 (6)
      • 삼성SW기출 (6)
      • 삼성 A형 (6)
    • 데이터사이언스 (1)
    • 인프라 (9)
      • 하드웨어 지식 (4)
      • Ansible (2)
      • Database (2)
      • 쉘스크립트 (1)
    • 주식 (0)
    • 취업 준비 (4)
      • 취업 이야기 (0)

블로그 메뉴

  • 홈
  • 태그

공지사항

인기 글

태그

  • 알고리즘
  • 전공요약
  • 티스토리챌린지
  • 백준
  • A형
  • 오블완
  • 나의 해방일지
  • 전공 요약 #운영체제
  • C++
  • nextjs
  • 기계식키보드 #nuphy
  • 삼성SDS
  • 전공 요약 #데이터베이스
  • 공간복잡도
  • GraphQL
  • 삼성SW역량테스트
  • Next.js #graphql #tailwind.css
  • 전공 요약 #네트워크
  • 언어
  • 면접

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
snowman95

코딩수련장

자바스크립트 - 배열
프론트엔드 개발/Javascript

자바스크립트 - 배열

2021. 8. 18. 22:50
728x90
반응형

배열 (Array)


배열에는 숫자, 문자열, 객체, 함수 모두 포함가능함.

자바스크립트에서 배열은 객체로 인식된다.

let stduents = ['짱구','철수','훈이','맹구','유리'];

# 접근 방법
stduents[0]; (짱구)
stduents[1]; (철수)
stduents[2]; (훈이)
stduents[3]; (맹구)
stduents[4]; (유리)

# 수정 방법
stduents[0] = "액션가면"
stduents[1] = "흰둥이"

# 추가 방법
stduents.push('값')           # 배열 맨끝에 값 추가
stduents.push('값1','값2')    # 배열 맨끝에 여러 값 추가
stduents.unshift('값')        # 배열 맨앞에 값 추가
stduents.unshift('값1','값2') # 배열 맨앞에 여러 값 추가

# 제거 방법
stduents.pop()                # 배열 맨끝에 값 제거
stduents.shift()              # 배열 맨앞에 값 제거

# 길이 반환
stduents.length

# 배열인지 확인
typeof students               # object (배열은 객체로 인식되기 때문)
Array.isArray(students)       # true

 

반복, 순회

for(let i=0; i<students.length; i++){ # 인덱스 필요할때
  console.log(studnets[i]);
}
for(let i of students){               # 인덱스 못 얻지만 편리함
  console.log(studnets[i]);
}

let id = ['sponge','bob']
arr.forEach((name, index) => {        # 첫번째는 값, 두번째는 인덱스
  console.log(`${index+1}, ${name}`);
});

 

탐색

let arr = [1,2,3]

arr.indexOf(1)   찾으면 인덱스 반환 없으면 -1 반환 (인덱스/-1)
arr.indexOf(1,3) 첫번째는 찾을 값 두번째는 탐색을 시작할 인덱스 (인덱스/-1) 
arr.includes(1); 포함여부 확인. (true/false)
arr.find()       찾으면 true 없으면 undefined 반환 (true/undefined)
arr.findIndex()  찾으면 인덱스 반환 없으면 -1 반환 (인덱스/-1)
arr.filter()     조건에 만족하는 값들을 배열로 반환


let user = [
  { name: "sponge"},
  { name: "bob"},
];
const a = user.find((u) => { find는 객체 같은 복잡한 구조에서 값을 찾을때 사용
  if (u.name === "bob") {
    console.log("hi");
  }
});

const b = user.findIndex(u => u.name === "bob");

const a = user.filter((u) => { find와 사용법 동일.
  if (u.name === "bob") {
    console.log("hi");
  }
});

 

자르고 붙이기

let arr = [1,2,3,4,5];

arr.splice(n, m)      인덱스 n부터 m개수만큼 지움
arr.splice(n, m, x)   인덱스 n부터 m개수만큼 지우고 그만큼 x로 채움
arr.splice(n, 0, x)   인덱스 n과 n+1 사이에 x를 추가
arr.splice(n,0,6,7,8) x는 여러개 올 수 있음

splice는 삭제된 요소를 반환한다.
d = arr.splice(0, 2)  [1,2] 반환

arr.slice(n, m)       인덱스 n부터 m-1까지 반환 (m을 안쓰면 끝까지, 음수는 뒤에서부터 카운트)
arr.slice(n)          인덱스 n부터 끝까지


arr.concat(arr1, arr2)배열을 합쳐서 반환
let arr=[1,2];          [1,2]
arr.concat([3,4]);      [1,2,3,4]
arr.concat([3,4],[5,6]);[1,2,3,4,5,6]
arr.concat([3,4],5,6);  [1,2,3,4,5,6]

 

정렬

let arr = [1,2,3,4,5];

arr.reverse() 역순 정렬 : arr = [5,4,3,2,1] 이렇게 제자리 정렬됨
arr.sort()    정렬      : 인수에 함수를 넣어서 다른 조작 가능함.
※ sort()는 문자열로 취급하여 정렬하므로 숫자를 넣어서 정렬시 똑바로 정렬이 안됨.

# 숫자 정렬
arr.sort((a,b) => {     : a가 작으면 a를 앞으로 크면 뒤로. 같으면 그대로
  return a-b;
});

Lodash 라이브러리
_.sortBy(arr);   를 사용하면 이런거 신경안쓰고 숫자/문자열/객체 등 소팅 가능

 

누적 합

let arr = [1,2,3,4,5];

arr.reduce()       배열의 누적합 반환
arr.reduceRight()  배열의 누적합 반환 (배열 우측부터 연산)


const arrSum = arr.reduce((prev, cur) => {  prev는 누적, cur는 현재값
  return prev + cur;
}, 0);  여기서 0은 초기값. 안쓰면 배열의 첫번째 요소


let users = [
  {name: "sponge", age:10},
  {name: "bob", age:20},
  {name: "zingzing", age:20},
];

let filterUser = arr.reduce((prev, cur) => {
  if(cur.age === 20){
    prev.push(cur.name);
  }
}, []);  : ['bob','zingzing']

 

배열 조작

let users = [
  { name:"sponge", age:10},
  { name:"bob", age:20},
];

arr.map()   배열을 조작하여 새 배열 반환해준다.
arr.join()  배열의 값들을 하나의 문자열로 구분자로 합쳐서 반환 (기본 구분자 : 쉼표)
arr.split() 배열의 값들을 구분자로 잘라서 반환

let newUser = users.map((user, index) => {
  return Object.assing({},user, {
    isAudlt : user.age >19.
  });
});

newUser=[
  { name:"sponge", age:10, isAudlt:false},
  { name:"bob", age:20, isAudlt:true},
];

let a = ['123','456','789'];
b = a.join();          '123,456,789' (쉼표로 합쳐짐)
c = a.join(' ');       '123 456 789' (공백으로 합쳐짐)

let aa = "good,bye";
bb = aa.split("")      ['g','o','o','d',',','b','y','e']
cc = aa.split(",")      ['good','bye']

 

구조 분해

let users = [
  { name:"sponge", age:10},
  { name:"bob", age:20},
];
let [u1,u2] = users;              객체를 각각 분해

let users = [
  { name:"sponge", age:10},
];
let {name,age} = user;            객체 하나를 분해
let {name:uName,age:uAge} = user; 변수명 변경도 가능함.
let {name:'noname',age:0} = user; 기본값 설정가능
let {name:'noname',age:0, gender:'male'} = user; 새로운 변수 넣어줄 수도 있음

let s = "1-2-3";
let splitS = s.split('-');

let [a=1,b=2,c=3] = [5,6]; 기본값 설정가능 (c는 값이 없으므로 3)
let [a=1, ,c=3] = [5,6,7,8]; 불필요한 값 생략 가능 (a=5, c=7, 나머지는 무시)

let a = 1;
let b = 2;
[a,b] = [b,a]   스왑 가능

 

 

반응형
저작자표시 동일조건 (새창열림)

'프론트엔드 개발 > Javascript' 카테고리의 다른 글

자바스크립트 - 진수 변환, Math 라이브러리  (0) 2021.08.21
자바스크립트 - 심볼  (0) 2021.08.21
자바스크립트 - 객체  (0) 2021.08.18
자바스크립트 - 함수  (0) 2021.08.18
자바스크립트 - 기본문법  (0) 2021.08.18
    '프론트엔드 개발/Javascript' 카테고리의 다른 글
    • 자바스크립트 - 진수 변환, Math 라이브러리
    • 자바스크립트 - 심볼
    • 자바스크립트 - 객체
    • 자바스크립트 - 함수
    snowman95
    snowman95
    (17~19) Unity/Unreal Engine 게임 프로그래머 (20~21) System Administrator ___________ (22~) React 웹 프론트앤드 개발자 __________ 깃헙 : https://github.com/snowman95

    티스토리툴바