복수의 배열을 결합해서 리턴
원본 데이터의 값 변경하지 않음
인자로 주어진 배열이나 값들을 기존 배열에 합쳐 새 배열을 반환
let arr = [1,2];
arr.concat([3,4]); // [1,2,3,4]
arr.concat([3,4],[5,6]); //[1,2,3,4,5,6]
arr.concat([3,4],5,6); //[1,2,3,4,5,6]
배열을 합쳐서 문자열을 만들으면 조인을 사용
let arr = ["안녕","나는","철수야"];
let result = arr.join(-);
console.log(result);// 안녕-나는-철수야
뒤에 삭제
뒤에 삽입
배열을 역순으로 재정렬, 최근 가입된 유저부터 보여주기, 최신글 순서로 정렬시 자주 사용
let arr = [1,2,3,4,5];
arr.reverse(); // [5,4,3,2,1]
앞에 삭제
arr.slice(n,m)
//인덱스 n부터 m까지 반환 (m은 포함하지 않고 바로 앞자리까지)
//m을 지정하지 않으면 끝까지 반환
let arr = [1,2,3,4,5];
arr.slice(1,4); // [2,3,4]
배열 재정렬
배열 자체가 변경되니 주의
제대로된 정렬하고 싶다면 인수로 정렬 로직을 담은 함수를 받음
함수를 인수로 받는다,
let arr = [1,5,4,2,3];
arr.sort();
console.log(arr); // (5) [1,2,3,4,5]
// 제대로된 정렬하고 싶다면 함수를 인수로 받는다.
let arr = [27, 8, 5, 13];
function fn(a,b){
return a-b;
}
arr.sort(fn);
console.log(arr);
배열의 특정 요소 지우기
arr.splice(시작요소, 개수)
//요소 지우기
let arr = [1,2,3,4,5];
arr.splice(1,2); //1번째부터 두개 삭제
console.log(arr); // [1,4,5]
//특정 요소 지우고 추가하기
let arr = [1,2,3,4,5];
arr.splice(1,3,100,200); // 1번째부터 세개를 지우고 그 자리에 100, 200 넣기
console.log(arr); // [1,100,200,5]
//삭제된 요소 반환
let arr = [1,2,3,4,5];
let result = arr.splice(1,2);
console.log(arr); // [1,4,5]
console.log(result); // [2,3]
앞에 삽입
arr.forEach(fn) 배열반복
//함수를 인수로 받음.
// 함수는 세개의 매개변수가 있는데 첫번째는 해당요소, 두번째는 인덱스, 세번째는 해당 배열 자체. 보통 첫번째와 두번째만 사용
let users = ['Mike', 'Tom','Jane']
users.forEach((item, index, arr) =>{
//code
});
let arr = ['Mike', 'Tom', 'Jane'];
arr.forEach((name, index) => {
console.log(`${index + 1}. ${name}`);
});
let arr = [1,2,3,4,5,1,2,3];
arr.indexOf(3); // 2번 자리에 있다!
arr.indexOf(3,3) // index 3부터 탐색해서 3이 어디있는지 찾아줘! 7번자리에 있다!
arr.lastIndexOf(3); // 끝에서부터 탐색, 끝에서 첫번째로 만나는 3의 인덱스 7 반환
포함하는지 확인
let arr = [1,2,3];
arr.includes(2); // true
arr.includes(8); // false
인덱스 오브처럼 찾는다는 의미는 동일하지만 보다 복잡한 연산이 가능하도록 함수를 연결할 수 있음. (짝수를 찾는다던지, 성인을 찾는다던지)
첫번째 true값만 반환하고 끝남. 만약 없으면 undefined 반환
findIndex는 해당 인덱스를 반환함. 없으면 -1반환
let arr = [1,2,3,4,5];
const result = arr.find((item)=>{
return item % 2 === 0;
}); // 짝수를 찾아서 반환함. 각 요소를 순회하며 2를 나눴을 때 나머지가 0인 요소를 찾음, 리턴값이 트루일 때 멈추고 해당 요소를 알려줌.
console.log(result); // 2 반환
//객체가 들어있는 배열인 경우 indexOf 이용 어려움 -> find이용
let userList = [
{name:"Mike", age:30},
{name:"Jane", age:27},
{name:"Tom", age:10},
];
const result = userList.find((user) => {
if(user.age <19){
return true;
}
return false;
});
console.log(result); // {name: "Tom", age:10}
//findIndex 사용하기 - 조건에 맞는 인덱스를 찾음
const result = userList.findIndex((user) => {
if(user.age <19){
return true;
}
return false;
});
console.log(result); // 2
조건을 만족하는 모든 요소를 배열로 변환
const arr = [1,2,3,4,5,6];
const result = arr.filter((item) => {
return item % 2 === 0;
});
console.log(result); // (3) [2,4,6]
함수를 받아 특정 기능을 시행하고 새로운 배열을 반환
let userList = [
{name:"Mike", age:30},
{name:"Jane", age:27},
{name:"Tom", age:10},
];
//매번 나이를 확인하기 귀찮아서 isAdult라는 프로퍼티 추가한 새로운 배열 만들기
let newUserList = userList.map((user, index)=>{
return Objext.assign({}, user, {
id: index+1,
isAdult : user.age>19,
});
})
console.log(newUserList);
/*
0: {name:"Mike", age: 30, id: 1, isAdult: true}
1: {name:"Jane", age: 27, id: 2, isAdult: true}
2: {name:"Tom", age: 10, id: 3, isAdult: false}
*/
console.log(userList);
/* 기존에 있던 유저 리스트는 변경된 것이 없음 !
0: {name:"Mike", age:30}
1: {name:"Jane", age:27}
2: {name:"Tom", age:10}
*/
문자열을 나눠서 배열로 만들어줌
const users = "Mike,Jane,Tom,Tony";
const result = users.split(","); // 쉼표 기준으로 나눠서 배열 만듦
console.log(result); // (4) ["Mike", "Jane", "Tom", "Tony"]
배열인지 아닌지 확인하는 방법
let user = {
name: Mike",
age: 30,
};
let userList = ["Mike", "Tom", "Jane"];
console.log(typeof user); // object
console.log(typeof userList); //object
console.log(Array.isArray(user)); // false
console.log(Array.isArray(userList)); // true
인수로 함수를 받음
(누적 계산값, 현재값)=> {return 계산값};
//배열의 모든 수 합치기
let arr = [1,2,3,4,5];
//forEach 사용할 경우
let result = 0; //초기값 0
arr.forEach((num=>{
result+=num;
});
console.log(result); //15
//reduce 사용할 경우
const result = arr.reduce((prev, cur)=>{
return prev + cur; //누적된 계산값에 현재값을 더한다
},0)// 초기값은 0
console.log(result); // 15
//성인만 뽑아서 새로운 배열 만들기
let userList = [
{name: "Mike", age: 30},
{name: "Tom", age: 10},
{name: "Jane", age: 27},
{name: "Sue", age: 26},
{name: "Harry", age: 42},
{name: "Steve", age: 60},
];
let result = userList.reduce((prev,cur)=>{
if(cur.age > 19){
prev.push(cur.name);
}
return prev;
}, []);
//초기값이 빈배열이고 19살보다 나이 많다면 배열에 푸쉬해주고 리턴함
console.log(result); // (5) ["Mike","Jane","Sue","Harry","Steve"]
//나이 다 더하기
let result = userList.reduce((prev, cur) => {
return (prev += cur.age);
}, 0);
console.log(result); //196
//이름이 세글자인 사람만 찾기
let result = userList.reduce((prev,cur) => {
prev.push(cur.name);
}
return prev;
}, []);
console.log(result); ["Tom", "Sue"]