본문 바로가기

ABC-Lab FrontEnd/수업 이론 정리

JavaScript 배열과 객체

배열

순서가 있는 값을 저장할 때 쓰이는 자료구조입니다.

let arr = new Array();
let arr = [];
// 위와 같이 두 가지 방법으로 빈 배열을 생성할 수 있고
let fruits = ["사과", "오렌지", "자두"];
// 안에 값을 넣어주어 순서가 있는 배열을 만들 수 있습니다.

 

각 배열 요소엔 0부터 시작하는 숫자(인덱스)가 매겨져 있습니다.

배열은 typeof로 확인시 object로 표시되기 때문에 Array.isArray 메서드를 이용하여 값이 배열인지 확인 할 수 있습니다.

let arr = [1, 2, 3]
// console.log(Array.isArray(arr)) => true
let fruit = 'apple'
// console.log(Array.isArray(fruit)) => false

 

배열에 사용되는 메서드

push : 배열의 마지막에 새로운 요소를 추가. *변경된 배열의 길이를 반환 *

pop :배열의 마지막 요소를 제거.*제거한 요소를 반환 *

reverse : 배열의 순서를 뒤바꿈.뒤바뀐 배열을 반환함

  const arr = [10, 20, 30];
  arr.push(40);//4|arr =>[10, 20, 30, 40]
  arr.pop();//40|arr =>[10, 20, 30]
  arr.reverse();//[30,20,10]

 

shift : 배열의 첫 번째 요소를 제거, 제거한 요소를 반환

unshift :배열의 첫 번째 자리에 새로운 요소 추가.변경된 배열의 길이 반환

  const arr = [10, 20, 30];
  arr.shift(); // 10| arr => [20, 30]
  arr.unshift(0); // 3 | arr => [0, 20, 30]

 

splice :배열 요소를 삭제,교체 또는 추가함.제거된 요소들을 배열로 반환

  const arr = [1, 2, 3, 4, 5];
  const arr1 = [1, 2, 3, 4, 5, 6];
  const arr2 = [1, 2, 3, 4];
  const arr3 = [1, 2, 3];
  arr.splice(2); // index2를 포함하여 모두 삭제 arr =>[1, 2]/return=>[3, 4, 5]
  arr1.splice(-2,3,10,20);
  // 마지막에서 두번째 인자를 포함하여 두개까지만 가능하기 때문에 2개를 삭제 후
  // 10,20인자를 추가 arr =>[1, 2, 3, 4, 10, 20] / return => [5, 6]
  arr2.splice(1,0,100);
  // index1위치에 100을 추가 arr => [1, 100, 2, 3, 4] / return => []
  arr3.splice(1,1,100);
  //index1 요소를 삭제하고, 100을 추가 arr =>[1, 100, 3] / return [2]

 

isArray : 들어온 인자가 Array인지 판단

at :index를 인자로 받아 해당 인자에 해당하는 요소를 반환

length :요소들의 개수를 반환

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

  Array.isArray(str);//false
  Array.isArray(arr);//true

  arr.at(-1);//2(arr[arr.length - 1]와 같음 ) 
  arr.length //6 

 

includes : 배열이 특정 요소를 포함하고 있는지 확인 join :배열이 모든 요소를 연결해 하나의 문자열로 만듦 (인자를 넣지 않을 경우 “,”)

*원시값들만들 요소로 가진 배열에서 이용하세요!

  const arr =["안녕","하세","요",null,undefined,"?"]; 
  console.log(arr.join());//안녕,하세,요,,,? 
  console.log(arr.join(""));//안녕하세요? 
  console.log(arr.includes("하세"));//true

 

find(callback) : 주어진 판별 함수를 만족하는 첫 번째 요소의 값을 반환 (없을 경우 undefined) findIndex(callback):주어진 판별 함수를 만족하는 첫 번째 요소의 인덱스 반환 (없을 경우 -1)

*콜백함수 :간단하게 다른 함수에 매개변수로 넘겨준 함수. 매개변수로 넘겨받은 함수는 일단 넘겨받고,때가 되면 나중에 호출(calledback)

  배열.find((현재 처리중인 요소[,현재 index [,배열]])=> 찾을 요소의 조건)
  배열.findIndex((현재 처리중인 요소[,현재 index [,배열]])=> 찾을 요소의 조건)

  const user = [{name : 'Kim', age : 13}, 
                {name : 'Lee', age : 32}, 
                {name : 'Park', age : 40}]
  //arrowfunction(많이 쓰는 방식 ) 
  users .find((user)=> user .age >30); 
  //{name:"Lee",age:32} 
  users.findIndex((user)=> user.age >30); //1 
  users.find((user)=> { return user.age >30 ; }); 
  users.findIndex((user)=> { return user.age >30 ; }); 
  //function 
  users.find (function (user){ return user.age >30 ; }) 
  users.findIndex (function (){ return user.age >30 ; })

 

filter(callback) : 조건이 true인 요소로 이루어진 새로운 배열.모두 false인 경우 빈 배열 반환

  const users =[ { name: "kim", age: 13, },
                { name: "lee", age: 32, },
                { name: "park", age: 40, }, ];
  users.filter((user)=> user.age >30); //[{name:'lee',age:32},{name:'park',age:40}]

 

forEach(callback) :배열 요소 각각에 대해서 callback실행 (for문과 비슷한 개념)반환값 없음 (undefined)

  배열.forEach((현재 처리중인 요소[,현재 index [,배열]])=> {실행문 })

  const arr =[1,2,3,4]; 
  arr.forEach((item)=> { console.log(item); }); 
  arr.forEach((item)=> console.log(item));
  ------
  1
  2
  3
  4

 

map(callback) :배열의 모든 요소에 각각 실행문을 호출한 결과를 모아 새로운 배열 반환

  배열.map((현재 처리중인 요소[,현재 index[,배열]])=> {실행문})
  const arr =[1,2,3,4,5,6]; 

  //2를 곱한 값들을 구해보자 
  const twiceArr =arr.map((item)=> item *2); 
  //[2,4,6,8,10,12]; 

  const mapEvenArr =arr.map((item)=> { if (item %2 ===0)return item; });
  // [ undefined, 2, undefined, 4, undefined, 6 ]

  const filterEvenArr =arr.map((item)=> { if (item %2 ===0)return item; }).filter(Boolean)
  // [ 2, 4, 6 ]

 

reduce(callback) :배열의 각 요소에 대해 주어진 리듀서 함수를 실행하고,하나의 결과값을 반환 (초기값이 없는 경우 배열의 첫번째 요소를 초기값으로.빈 배열일 경우 오류 발생)

  배열.reduce((누산기,현재 처리중인 요소[,현재 index[,배열]])=> {실행문,반환}[,초기값])

  const result = arr.reduce((acc,cur) => {
  if (cur % 2 ===0)
  return acc + cur *3;
  else return acc +
  cur *2;},0);

  // console.log(result) => 36

  const result2 = arr.reduce((acc, cur) => {
    if (cur % 2 === 0) acc.push(cur*3);
    else acc.push(cur*2);
    return acc;
  }, []);

  // console.log(result2) => [ 2, 6, 6, 12, 10 ]

 

객체 (object)

key(string) : value(모든 자료형) 쌍으로 구성된 프로퍼티들의 집합입니다.

const user ={ name: '나란 남자', } 
// user ='hi!';//ERROR 
user.isFemale =false;//가능! 
delete user.isFemale //isFemale property삭제 
console.log('name' in user);//true
let keyword = 'name'
// console.log(user.keyword) => undefined
// console.log(user['keyword']) => undefined
// console.log(user[keyword]) => 나란 남자

 

객체에서 사용되는 메서드

keys : 프로퍼티의 key들을 문자열 배열로 반환 [“key1”, “key2”,…]

values : 프로퍼티의 value들을 배열로 반환 [value1, value2,…]

entries : 프로퍼티의 [key,value]쌍들을 배열로 반환 (2중 배열) [[“key1”,value1],[“key1”,value1…]

  Object.keys(obj); //['name','age','address','phoneNumber'] 
  Object.values(obj); //['Kim',12,null,'01012345678'] 
  Object.entries(obj); //[['name','Kim'],['age',12],['address',null],['phoneNumber','01012345678']]

 

깊은 복사와 얕은 복사

얕은 복사 (shallow copy) : 데이터가 저장한 '메모리 주소 값'을 복사하는것을 의미합니다. 복사한 객체가 변경된다면 기존의 객체도 변경이 됩니다.
깊은 복사(Deep copy) : 새로운 메모리 공간을 확보해 완전히 복사하는 것을 의미합니다.

'ABC-Lab FrontEnd > 수업 이론 정리' 카테고리의 다른 글

JavaScript 핵심개념 1.스코프  (0) 2023.02.10
JSON을 JavaScript 배열 형태로  (0) 2023.02.03
JavaScript 원시 자료형과 참조 자료형  (0) 2023.02.03
HTML/CSS 활용  (0) 2023.01.30
HTML과 CSS 기초  (0) 2023.01.30