Array()
수집된 데이터의 더미로 대괄호 안에 값을 넣어 표시한다.
다른 타입의 값들도 섞어서 넣을 수 있다.
let myArr = [1, 2, 3, 4]
let myArr2 = ["hello", 1, 3, "A"];
공백도 들어갈 수 있다.
새로운 배열 만드는 법
배열 안의 요소를 조회하는 법
let myArr2 = ["hello", 1, 3, "A"];
myArr2[0]
> "hello"
Method
1) 요소 추가
2) 요소 삭제
3) 중간 요소 추가, 삭제
// 중간요소 삭제
let myArr2 = ["hello", 1, 3, "A"];
myArr2.splice(1,2);
// myArr2[1]부터 포함해서 2개를 지운다.
> ["hello", "A"];
// 중간에 새로운 요소 추가
myArr2.splice(1,0,"b");
// myArr2[1]에 1개를 추가한다
> ["hello", "b", "A"]
★ 대소문자를 구분한다.
let myArr2 = ["hello", 1, 3, "A"];
myArr2.indexOf("A");
> 3
includes와 indexOf
- 브라우저 호환성이나 범용성면에서 indexOf가 우세하다.
- includes는 존재여부에 대해서만 알 수 있고, indexOf는 인덱스(위치값)까지 알 수 있다.
let myArr2 = ["hello", 1, 3, "A"];
let newArr = myArr2.slice(1,2);
// newArr에 myArr2의 요소인 '1'만 담는다.
newArr;
> [ 1 ];
생각해보기
//제시된 수의 배열이 홀수인지 짝수인지 알아내서 새로운 배열에 결과를 boolean으로 넣기
let numbers = [1, 2, 3];
let result = [];
// isEven이라는 함수를 만듭니다.
let isEven = function (x) {
result.push(x % 2 === 0);
};
numbers.forEach(isEven);
result;
> [false, true, false]
//한줄소스로 바꾸면
numbers.forEach(function(i){ result.push(i % 2 === 0); });
// 문자열의 순서를 뒤집기
let a = 'hello world'
let result = a.split('').reverse().join("");
result;
> "dlrow olleh"
배열 안의 문자열을 합치기
배열과 배열을 합치기
let words = [ 'kiwi', 'banana', 'apple', 'nuts', 'desk' ];
let checkWords = [];
// 제시된 단어 중 'a'를 포함한 단어만 표현하기
checkWords = words.filter( x => { return x.indexOf('a') !== -1;});
checkWords;
> [ 'banana', 'apple' ]
let words = [ 'kiwi', 'banana', 'apple', 'desk', 'ask', 'pupple' ];
let checkWords = [];
// 제시된 단어 중 'a'로 시작된 단어만 제외
checkWords = words.filter(x => { return x.indexOf('a'); });
checkWords;
> ["kiwi", "banana", "nuts", "desk", "pupple"]
생각해보기
// 각 요소에 5씩 더한 결과를 나타내기
let num = [ 20, 30, 40 ];
let add5 = num.map( x => { return x + 5; });
add5;
> [ 25, 35, 45 ];
// 문자열 요소를 가진 배열을 입력받아 각 요소의 길이를 새로운 배열로 리턴하기
function getLength(arr) {
return arr.map(x => x.length );
}
getLengthOfElements(['hi', 'code', 'states']);
console.log(output); // --> [2, 4, 6]
// 객체의 특정 프로퍼티 얻어내기
let users = [
{ name: "Tim", age:45 },
{ name: "Ana", age:20 },
{ name: "Harry", age:32 },
];
function onlyUsernames(user){
return user.name
};
users.map(onlyUsernames);
// 전체요소가 10이상이면 true
function allBig(x) {
return x >= 10;
}
[1, 5, 8, 130, 44].every(allBig);
> false
// 요소 중 10이상의 수가 있으면 true
function checkTenOver(x) {
return x >= 10;
}
[1, 5, 8, 130, 44].some(checkTenOver);
> true
// 1,2,3의 누적값 구하기
let numbers = [1, 2, 3];
let acc = numbers.reduce( (x,y) => { return x + y; }, 0); // 맨 뒤에 0은 초기값
acc;
> 6
//글자붙이기
let result = ['0', '1', '2'].reduce(function (stick, x) {
return stick + x;
});
result
> '012'
function joinName(resultStr, user) {
resultStr = resultStr + user.name + ', ';
return resultStr;
}
let users = [
{ name: 'Tim', age: 40 },
{ name: 'Satya', age: 30 },
{ name: 'Sundar', age: 50 }
];
users.reduce(joinName, '');
function makeAddressBook(addressBook, user) {
let firstLetter = user.name[0];
if(firstLetter in addressBook) {
addressBook[firstLetter].push(user);
} else {
addressBook[firstLetter] = [];
addressBook[firstLetter].push(user);
}
return addressBook;
}
let users = [
{ name: 'Tim', age: 40 },
{ name: 'Satya', age: 30 },
{ name: 'Sundar', age: 50 }
];
users.reduce(makeAddressBook, {});
Math.min , max를 활용한 최대값 최소값 구하기
참조
onlyMaleAges = [24, 25, 29]
Math.min.apply(null,onlyMaleAges); //최소값
Math.max.apply(null,onlyMaleAges); // 최대값