목록JavaScript/자료구조와 자료형 (17)
dolog
서문) iterable(반복 가능한) 객체는 배열을 일반화한 객체이다 iterable 개념을 사용하면 어떤 객체든 for..of 반복문을 사용할 수 있다 iterable 개념 중에 대표적인 것이 배열인데 이외에도 다수의 내장 객체가 반복이 가능하다 (문자열…) 배열이 아닌 객체는, 어떤 것들의 목록이나 집합 등을 나타내고 있는 경우 for..of 문법을 적용해 순회할 수 있다 Symbol.iterator // 객체에 for..of 적용하기 let range = { from: 1, to: 5 }; range[Symbol.iterator] = function() { // Symbol.iterator가 없으면 error return { current: this.from, last: this.to, next()..
배열 변형하는 메서드 map(사용 빈도가 아주 높은 메서드 중 하나) : 배열 요소 전체를 대상으로 함수를 호출하고, 함수 호출 결과를 새로운 배열로 반환해준다 ➡️ let result = arr.map(function(item, index, array) { … }); // 각 요소의 길이를 출력 let lengths = [ “bbosong”, “namsoon”, “kiki” ].map(item => item.length); console.log(lengths); // 7, 7, 4 sort(fn) : 배열의 요소를 정렬해주는데 배열 자체가 변경된다(재정렬) // 요소가 문자열로 취급되어 재정렬(기본) let arr = [1, 2, 15]; arr.sort(); console.log(arr); // 1,..
요소 추가 및 제거 메서드 shift, unshift / pop, push 이외 메서드 splice : 배열에 요소 추가, 삭제, 교체 모두가 가능하다 ➡️ arr.splice(index[, deleteCount, elem1, …, elemN]) index는 조작을 가할 첫번째 요소를 가리키는 index deleteCount는 삭제할 요소의 개수 elem1, …, elemN은 배열에 추가할 요소 // 요소 삭제 예시 let arr = [ “I”, “study”, “JS” ]; arr.splice(1, 1); console.log(arr); // [ “I”, “JS” ] // 요소 삭제와 교체 예시 let arr = [ “I”, “study”, “JS”, “right”, “now” ]; arr.splice..
key: value(property)을 사용해 식별할 수 있는 값을 담은 집단 ➡️ 객체 그러나 순서가 있는 컬렉션이 필요할 때가 종종 있다 객체는 태생이 순서를 고려하지 않고 만들어진 자료구조이기 때문에 새로운 프로퍼티를 ‘사이에’ 끼워 넣을 수 없다 이럴때 사용할 자료구조가 바로 배열이다 배열 선언 let arr = new Array(); let arr = []; // 대부분 많이 사용하는 배열 선언 방법 더 디테일하게 선언하면 ⬇️ let fruits = [ “apple”, “orange”, “plum” ]; 0부터 시작하는 index가 존재한다 : 배열 내 순서 배열 내 특정 요소를 얻고싶다면 [ ] 안에 해당 index 숫자를 넣어줘야 한다 let fruits = [ “apple”, “orang..
부분 문자열(substring) 찾기 str.indexOf(substr, pos) : substr의 pos에서 부터 시작해, 부분 문자열 substr이 어디에 위치하는지 찾아주고 찾은 위치 반환, 못찾으면 -1 반환 let str = ‘Widget with id’; console.log(str.indexOf(‘Widget’)); // 0 console.log(str.indexOf(‘widget’)); // -1, 대/소문자를 따지기 때문에 console.log(str.indexOf(‘id’)); // 1, Widget에서 id로 1번째 위치로 파악함 str.indexOf(substr, pos)의 두번째 매개변수 pos를 사용하면 검색이 해당 위치부터 시작된다 let str = ‘Widget with id..
JS에서 문자열은 페이지 인코딩 방식과 상관없이 항상 UTF-16 형식을 따른다 따옴표 문자열은 작은 따옴표(‘), 큰 따옴표(“), 백틱(`)으로 감쌀 수 있다 let single = ’single’; let double = “double”; let backticks = `backticks`; 백틱하면 뭐다 ? 템플릿 리터럴(template literal, `${…}`) 이다 {…} 안에 표현식을 넣어 문자열 중간에 쉽게 삽입 가능하다 let sum = (a, b) => a + b; console.log(`1 + 2 = ${sum(1, 2)}.`); // 1+2=3 또한 문자열을 여러 줄에 걸쳐 작성할 수 있다 (❗️그러나 작은/큰 따옴표는 안된다(…방법은 있다)) let guestList = `gue..
isNaN 과 isFinite 비정상적인 숫자) Infinity 또는 -Infinity : 어떤 숫자보다 크거나 혹은 작은 특수 숫자 값 NaN : 에러를 나타내는 값 정상적인 숫자와 구분하기 위한 특별한 함수가 바로 isNaN 와 isFinite isNaN : 인수를 숫자로 변환한 다음 NaN인지 테스트함 console.log(isNaN(NaN)); // true console.log(isNaN(“str”)); // true === 으로 비교시, NaN은 자신을 포함하여 그 어떤 값과 일치 하지 않기 때문이다 console.log(NaN === NaN); // false isFinite : 인수를 숫자로 변환하고 변환한 숫자가 일반 숫자인 경우 true를 반환 ㄴ NaN / Infinity / -Inf..
JS는 숫자를 나타내는 두가지 자료형을 지원한다 일반적인 숫자는 ‘배정밀도 부동소수점 숫자(double precision floating point number)’로 알려진 64비트 형식의 IEEE-754에 저장된다 임의의 길이를 가진 정수는 bigint 숫자로 나타낼 수 있다 (일반적인 숫자로는 253 이상 -253 이하는 사용할 수 없어서 만들어짐) 숫자를 입력하는 다양한 방법 ‘e’ let billion = 1000000000; // 0을 많이 사용하다보면 실수가 생길 수 있다 let billion = 1e9 // 10억, 1과 9개의 0 console.log(7.3e9); // 73억 e 왼쪽에 있는 수에 e 오른쪽에 있는 수 만큼 10의 거듭제곱을 곱해준다 le3 = 1 * 1000; 1.23e..