
1) array

const arr = ['바나나', '복숭아', '키위'];const arr2 = new Array();const arr3 = new Array(10); //[ <10 empty items> ]
console.log(arr3);const arr4 = new Array(1,2,3);
console.log(arr4);
const arr5 = new Array('코코아');
console.log(arr5);console.log(Array.of(10));console.log(arr[0]);
console.log(arr[1]);
console.log(arr[2]);console.log(typeof arr); //Object2) diffrences from regular array
console.log(Object.getOwnPropertyDescriptors([1,2,3]));const arr = [
'홍길동',
20,
true,
null,
undefined,
NaN,
Infinity,
[],
{},
function(){}
];3) length property
arr.push(6);
console.log(arr);
console.log(arr.length);
arr.pop();
console.log(arr);
console.log(arr.length);
arr.length = 3;
console.log(arr);
console.log(arr.length);
arr.length = 10;
console.log(arr);
console.log(arr.length);
console.log(Object.getOwnPropertyDescriptors(arr));
const sparse = [ , 2, 4];
console.log(sparse);
console.log(sparse.length);
console.log(Object.getOwnPropertyDescriptors(sparse));
1) array method
const arr = [];
// 배열의 생성자 함수는 Array
console.log(arr.constructor === Array); // true
// 배열의 프로토타입 객체는 Array.prototype
console.log(Object.getPrototypeOf(arr) === Array.prototype); // true
// => Array.prototype은 배열을 위한 빌트인 메서드를 제공한다.
const foodList = ['물회', '삼계탕', '냉면', '수박', '물회'];
console.log(`foodList.indexOf('물회') : ${foodList.indexOf('물회')}`); // 0
// 1번 인덱스에서부터 물회가 위치한 인덱스 찾기(0번 인덱스는 무시)
console.log(`foodList.indexOf('물회', 1) : ${foodList.indexOf('물회', 1)}`); // 4
console.log(`foodList.indexOf('삼겹살') : ${foodList.indexOf('삼겹살')}`); // -1
console.log(`foodList.lastIndexOf('물회') : ${foodList.lastIndexOf('물회')}`); // 4
console.log(`foodList.lastIndexOf('물회', 1) : ${foodList.lastIndexOf('물회', 1)}`); // 0
console.log(`foodList.lastIndexOf('삼겹살') : ${foodList.lastIndexOf('삼겹살')}`); // 요소가 없으면 -1
console.log(`foodList.includes('물회') : ${foodList.includes('물회')}`); // true
console.log(`foodList.includes('삼겹살') : ${foodList.includes('삼겹살')}`); // false
const chineseFood= ['짜장면', '짬뽕', '우동'];
console.log(`push 전 chineseFood : ${chineseFood}`); // 짜장면,짬뽕,우동
chineseFood.push('탕수육');
chineseFood.push('양장피');
// chineseFood.push('탕수육', '양장피');
console.log(`push 후 arr : ${chineseFood}`); // 짜장면,짬뽕,우동,탕수육,양장피
console.log(`chineseFood.pop() : ${chineseFood.pop()}`); // 양장피
console.log(`chineseFood.pop() : ${chineseFood.pop()}`); // 탕수육
console.log(`chineseFood.pop() : ${chineseFood.pop()}`); // 우동
console.log(`pop 후 chineseFood : ${chineseFood}`); // 짜장면,짬뽕
const chickenList = ['양념치킨', '후라이드', '파닭'];
console.log(`unshift 전 chickenList : ${chickenList}`); // 양념치킨,후라이드,파닭
// 맨 윗줄에 추가한다(먼저 입력한 요소가 아래에서부터 위로 추가)
chickenList.unshift('간장치킨');
chickenList.unshift('마늘치킨');
// 한번에 앞에 추가하면 하나의 덩어리로 취급해서 들어간다.
// chickenList.unshift('간장치킨', '마늘치킨');
console.log(`unshift 후 chickenList : ${chickenList}`); // 마늘치킨,간장치킨,양념치킨,후라이드,파닭
console.log(`chickenList.shift() : ${chickenList.shift()}`); // 마늘치킨
console.log(`chickenList.shift() : ${chickenList.shift()}`); // 간장치킨
console.log(`chickenList.shift() : ${chickenList.shift()}`); // 양념치킨
console.log(`shift 후 chickenList : ${chickenList}`); // 후라이드,파닭
const idol1 = ['아이브', '오마이걸'];
const idol2 = ['트와이스', '에스파'];
const idol3 = ['블랙핑크', '레드벨벳'];
// 배열명.concat(배열명1, 배열명2, ...)
const mix = idol1.concat(idol2);
const mix2 = idol3.concat(idol1, idol2);
console.log(`idol1 기준으로 idol2 배열을 concat : ${mix}`); // 아이브,오마이걸,트와이스,에스파
console.log(`idol3 기준으로 idol1, idol2 배열을 concat : ${mix2}`); // 블랙핑크,레드벨벳,아이브,오마이걸,트와이스,에스파
// slice(시작인덱스, 종료인덱스)
// 원본 배열 변경 X
console.log(`front.slice(1, 3) : ${front.slice(1, 3)}`); // CSS,JavaScript
console.log(`front : ${front}`); // HTML,CSS,JavaScript,jQuery
// splice(index, 제거수, 추가값1, 추가값2, ...)
// 원본 배열 변경 O
console.log(`front.splice(3, 1, "React") : ${front.splice(3, 1, "React")}`); // jQuery
console.log(`front : ${front}`); // HTML,CSS,JavaScript,React
const snackList = ['사탕', '초콜렛', '껌', '과자'];
console.log(`snackList.join() : ${snackList.join()}`); // 사탕,초콜렛,껌,과자
console.log(`snackList.join('/') : ${snackList.join('/')}`); // 사탕/초콜렛/껌/과자
console.log(`[1, 2, 3, 4, 5].reverse() : ${[1, 2, 3, 4, 5].reverse()}`); // 5,4,3,2,1
2) array higher order function
배열 고차 함수
Array.prototype.sort
let numbers = [];
for(let i = 0 ; i < 10 ; i++){
numbers[i] = Math.floor(Math.random()*100) + 1;
}
console.log(`정렬 전 numbers : ${numbers}`);
numbers.sort();
console.log(`정렬 후 numbers : ${numbers}`);
// 숫자 오름차순 정렬
function compare(a,b){
if(a > b) return 1;
if(a == b) return 0;
if(a < b) return -1;
}
numbers.sort(compare);
console.log(`매개변수로 compare 함수 전달하여 숫자 오름차순 정렬`);
console.log(numbers);
numbers.sort(function(a,b){return b - a;});
numbers.sort((a,b) => b - a);
console.log(`숫자 내림차순 정렬`);
console.log(numbers);
Arrays.prototype.forEach
numbers = [1, 2, 3, 4, 5];
numbers.forEach(function(item, index, array){
console.log(`itme : ${item}`);
console.log(`index : ${index}`);
console.log(`array : ${array}`);
});
// 각 요소 별로 * 10 한 값을 콘솔에 출력
numbers.forEach(item => console.log(item*10));
Array.prototype.map
// true, 1, 'text'로 구성된 배열 types를 item의 자료형 타입으로 변경
const types = [true, 1, 'text'].map(item => typeof item); //boolean, number, String
console.log(types);
const length = ['apple', 'banana', 'cat', 'dog', 'egg'].map(function(item){return item.length});
console.log(length);
Arrays.prototype.filter
numbers = [1, 2, 3, 4, 5];
const odds = numbers.filter(item => item % 2);
Array.prototype.reduce
numbers.reduce(function(previousValue, currentValue, currentIndex, array){
console.log(`previousValue : ${previousValue}`);
console.log(`currentValue : ${currentValue}`);
console.log(`curruentIndex : ${currentIndex}`);
console.log(`array : ${array}`);
});
// 합산
const sum = numbers.reduce(function(previousValue, curruentValue){
return previousValue + curruentValue;
});
/*
previousValue = 1, currentValue = 2 return 3
previousValue = 3, currentValue = 3 return 6
previousValue = 6, currentValue = 4 return 10
previousValue = 10, currentValue = 5 return 15
*/
console.log(`sum : ${sum}`);
// 최대값 취득
const max = numbers.reduce(function(pre, cur){
return pre > cur ? pre : cur;
});
console.log(`max : ${max}`);
Arrays.prototype.some
// 배열 내 요소 중 10보다 큰 값이 1개 이상 존재하는지 확인
let result = [1, 5, 3, 2, 4].some(item => item > 10);
console.log(`result : ${result}`);
// 배열 내 요소 중 3보다 큰 값이 1개 이상 존재하는지 확인
result = [1, 5, 3, 2, 4].some(item => item > 3);
console.log(`result : ${result}`);
Arrays.prototype.every
// 배열 내 요소의 모든 값이 3보다 큰지 확인
result = [1, 5, 3, 2, 4].every(item => item > 3);
console.log(`result : ${result}`);
// 배열 내 요소의 모든 값이 0보다 큰지 확인
result = [1, 5, 3, 2, 4].every(item => item > 0);
console.log(`result : ${result}`);
Arrays.prototype.find
Arrays.prototype.findIndex
const student = [
{name : '유관순', score : 90},
{name : '홍길동', score : 80},
{name : '장보고', score : 70}
];
result = student.find(item => item.name === '유관순');
console.log(result);
result = student.findIndex(item => item.name === '유관순');
console.log(result);
result = student.find(item => item.name === '신사임당');
console.log(result);
result = student.findIndex(item => item.name === '신사임당');
console.log(result);
result = student.find(item => item.score >= 60);
console.log(result);