배열은 순서가 있는 값을 의미합니다.
배열에서 값은 요소(element)라고 부릅니다.
순서는 인덱스(index)라고 부르며, 1이 아닌 0부터 번호를 매깁니다.
대괄호를 이용해서 배열을 만들고, 각각의 요소는 쉼표로 구분해줍니다.
let myNumber = [73, 98, 86, 61, 96];
존재하지 않는 요소는 undefined로 나옵니다.
반복문을 이용해 배열의 요소를 한번씩 출력하려면?
let myNum = [73, 98, 86, 61];
for(let n = 0; n< myNum.length; n++) {
console.log(myNum[n]);
}
let words = ['피', '땀', '눈물'];
typeof '문자열' // string
typeof '123 // number
typeof words // object
typeof [1,2,3] // object
// 배열인지 확인하는 방법
Array.isArray(words) // true
Array.isArray(123) // false
Array.isArray([1,2,3]) // true
let arr = ['code' , 'states'];
// 추가하는 법
arr.push('pre');
console.log(arr); // ['code', 'states', 'pre']
// 삭제하는 법
arr.pop()
console.log(arr); // ['code', 'states']
지금처럼 push 와 pop을 이용하여 배열의 값을 추가하거나 삭제하는 것이 가능한데 여기서 요소가 가장 뒤에 추가되거나 삭제되는데 앞에 추가하거나 삭제하고 싶을경우
shift , unshift를 사용하면 됩니다.
arr.shift()
console.log(arr) // ['states']
arr.unshift('abc')
console.log(arr) // ['abc' , 'states']
indexOf 사용하여 확인
let words = ['abc' ,'abc2', 'abc3'];
words.indexOf('abc2') // 1
words.indexOf('abc') // 0
words.indexOf('bbc') // -1 (없는단어)
words.indexOf('abc') === -1 // false
words.indexOf('abc') !== -1 // true
includes 사용하여 확인
let words = ['abc' , 'abc2' ,'abc3'];
words.includes('abc') // true
words.includes('bbc') // false
includes보다 indexOf를 사용해야 하는 이유
= includes는 브라우저 호환성에서 internet Explorer에서 호환되지 않기 때문에
문자열.indexOf('문자')
indexOf() 메서드는 호출한 String 객체에서 주어진 값과 일치하는 첫 번째 인덱스를 반환합니다. 일치하는 값이 없으면 -1을 반환합니다
배열.includes('문자 or 문자열')
includes() 메서드는 배열이 특정 요소를 포함하고 있는지 판별합니다. ( T / F )
indexOf / includes 차이점
indexOf는 해당 index 자체를 찾아 splice를 이용한 제거에 유리하나
includes는 return으로 T/F 처리에 유
만약 나를소개하는 프로그램을 만들어야 할떄
let userName = 'Steve';
let userLastName = 'KIM';
let userEmail = 'steve@naver.com';
이런식으로 하나하나 입력한다면 불편하지 않을까요?
더군다나 여러사람의 인적사항을 받는 프로그램을 만든다면 더욱 불편하게 될텐데 객체를 이용하면 좀 더 편리하고 간편하게 작업할 수 있습니다.
let user = {
firseName : 'Steve',
lastName : 'KIM',
email : 'steve@naver.com'
};
이런식으로 객체는 키와 값 쌍으로 이루어져 있고
위의 방식보다 훨씬 편리하게 작업할 수 있습니다.
let user = {
firstName: 'Steve',
lastName: 'KIM',
email: 'steve@naver.com',
city: 'Seoul'
};
user.firstName; // 'Steve'
user.city; // 'Seoul'
let user = {
firstName: 'Steve',
lastName: 'KIM',
email: 'steve@naver.com',
city: 'Seoul'
};
user['firstName']; // 'Steve'
user['email']; // 'steve@naver.com'
-> 배열 내의 요소에 접근하기 위해서는 우선 검색을 통해 데이터에 접근해야 합니다. 이때 배열 내의 각 요소를 특정 할 수 있는 수단은 index밖에 없기 때문에 index를 모르는 상태라면 필연적으로 모든 배열의 요소를 순회해야 한다는 단점이 있습니다.
또한 index를 알고 있는 경우라도 그 index를 뽑아내기 위해서 사전에 이미 배열의 모든 요소를 순회한 셈이므로 동일한 성능상의 손해가 있었다고 볼 수 있습니다.
이러한 단점 째문에 길이가 크고 데이터의 접근이 잦은 배열이라면 객체로 변환하는게 좋기때문입니다.