배열, 객체
배열 특징 : 순서에 집중. 인덱스로 요소를 조회 - arr[index]
객체 특징 : 키의 의미에 집중한 데이터 구조. 키의 속성으로 요소를 조회 - obj.name
(.)온점(dot) : 온점을 이용해서 변수가 가지고 있는 속성(property)에 접근 가능. 관련된 명령(method) 실행 가능. 함수처럼 ()소괄호 이용한 형태로 실행.
문자열or배열변수.length
, 배열변수.push(요소)
, 배열변수.pop()
let 배열변수 = [원소, 원소, 원소, 원소];
let myNum = [73, 98, 86, 61, 96];
// "myNum"이라는 배열의 3번째 인덱스 값은 61 : myNum[3] 값은 61
배열변수[index];
myNum[3] = 200;
// myNum = [73, 98, 86, 200, 96]
let myNum1 = [[13, 30], [73, 8], [44, 17]];
// myNum1의 1번째 인덱스 값 : myNum1[1] 값은 [73, 8]
// myNum1의 1번째 인덱스 값의 0번째 인덱스 값 : myNum1[1][0] 값은 73
배열변수.length;
let myNum = [73, 98, 86, 61];
// myNum.length; => 4
myNum.push(요소)
: 리턴 값은 방금 추가된 후 배열.lengthmyNum.unshift(요소)
: 리턴 값은 방금 추가된 후 배열.lengthlet myNum = [73, 98, 86, 61];
// 끝에 요소 추가
myNum.push(96); // 리턴 값은 추가된 배열의 길이 5
// myNum이라는 배열 끝에 96 추가
// myNum = [73, 98, 86, 61, 96];
// 앞에 요소 추가
myNum.unshift(96);
// myNum이라는 배열 앞에 96 추가
// myNum = [96, 73, 98, 86, 61];
myNum.pop()
: 리턴 값은 방금 삭제된 첫번째 였던 요소myNum.shift()
: 리턴 값은 방금 삭제된 마지막번째 였던 요소 let myNum = [73, 98, 86, 61];
// 끝에 요소 삭제
myNum.pop(); // 리턴 값은 방금 삭제된 마지막번째 요소인 61
// myNum이라는 배열 끝에 요소 삭제
// myNum = [73, 98, 86];
// 앞에 요소 삭제
myNum.shift(); //
// myNum이라는 배열 앞에 요소 삭제
// myNum = [98, 86];
let myNum = [73, 98, 86, 61];
for(let n = 0; n < myNum.length; n++){
console.log(myNum[n]);
}
// myNum.length 값은 4, 출력은 index 3 까지
let myNum = [73, 98, 86, 61]; //배열
let obj = { a: 1}; // 객체
typeof = myNum // "object"
typeof = [1, 2, 3] // "object"
typeof = obj // "object"
Array.isArray(배열)
Array.isArray( myNum ) // true
Array.isArray( [1, 2, 3] ) // true
Array.isArray( [] ) // true
배열 테이블로 확인 : console.table(배열)
배열 요소 포함 여부 확인 :
배열변수.indexOf('있는지 확인하고 싶은 요소')
let words = ['a', 'ab', 'abc']; //배열
words.indexOf('a'); // 0
words.indexOf('abc'); // 2
words.indexOf('없는단어'); // -1
//응용 : 결과값이 -1이 아니면 존재하는 요소
words.indexOf('없는단어') !== -1; // false : 없다
words.indexOf('A') !== -1; // false : 없다
words.indexOf('ab') !== -1; // true : 있다
배열변수.includes('있는지 확인하고 싶은 요소')
let words = ['a', 'ab', 'abc']; //배열
words.includes('없는단어') // false : 없다
words.includes('A') // false : 없다
words.includes('ab') // true : 있다
객체 : 각기 다른 값을 가질 수 있지만, 입력해야하는 데이터의 종류가 동일한 경우 객체를 사용하면 손쉽게 데이터를 관리 가능. 공통적인 속성을 가지는 경우 객체를 사용한다. ( 예. 회원 주소록 )
배열은 각 인덱스가 어떤 정보를 가지는지 알 수 없다.
let user = ['Steve', 'Lee', 'steve@code.com', 'Seoul'];
let user = ['Jason', 'Kim', 'Jason@code.com', 'Busan'];
let user = {
firstName : 'Steve',
lastName : 'Lee',
email : 'steve@code.com',
city : 'Seoul'
};
객체변수.키
user.firstName; // 'Steve'
user.city; // 'Seoul'
객체변수['키']
, 객체변수[변수]
user['firstName'] // 'Steve'
user['city'] //'Seoul'
user[city] // ** content is not defined 에러가 난다 = city라는 변수가 정의된 적이 없다.
let keyname = 'city';
user[Keyname] // 'Seoul'
user.city
=== user['city']
!== user[city]
: 객체변수.키 = 값;
let user = {
firstName : 'Steve',
lastName : 'Lee',
email : 'steve@code.com',
city : 'Seoul'
};
// 객체 값 추가
user['age'] = '28';
user.isPublic = true;
user.tags = ['#코드스테이츠', '#개발자과정'];
// 객체 변환
//let user = {
// firstName : 'Steve',
// lastName : 'Lee',
// email : 'steve@code.com',
// city : 'Seoul'
// age : '28',
// isPublic : true,
// tags : ['#코드스테이츠', '#개발자과정']
//};
: delete 키.값;
// 키-값 쌍 지우기
delete user.age;
delete user['age'];
: 키 in 객체변수;
let user = {
firstName : 'Steve',
lastName : 'Lee',
email : 'steve@code.com',
city : 'Seoul'
};
// 확인
'firstName' in user; //true
'Name' in user; //false
[] === [] // false
: 주소(위치)가 서로 달라서..arr.slice()
arr.length
// 0, 요소의 갯수, [] 빈배열이라는 말Array.isArray(arr)
: 배열 확인(빈배열도 배열)배열.splice(<제거를 시작할 인덱스>, <제거할 엘리먼트 수>, <제거할 자리에 새롭게 집어넣을 엘리먼트>)
: 배열o, 문자열x, splice라는 메소드는 ‘배열’에서 요소의 범위를 정해 제거하거나, 어떤 자리에 요소를 추가하는 메소드배열.join('-')
: 배열의 요소들을 ()안의 것으로 합친 문자열로 변환Object.keys(obj)
: 객체의 키값을 배열로 만듦 - mdn**배열 08번 for of
24 . 25