Array.from(Array(n), () => Array(m))
const arr1 = Array.from(Array(3), () => new Array(2));
// 3 * 2 짜리 빈배열 생성
const arr2 = Array.from(Array(3), () => Array(2).fill(0));
// 0으로 채워진 3 * 2 짜리 배열 생성
// [[0, 0], [0, 0], [0, 0]]
const nums = [1, 2, 3]
for (let num of nums) {
console.log(num)
}
// 1
// 2
// 3
병렬처리
const arr = ['one', 'two', 'three', 'four', 'five', 'six'];
arr.forEach((a, i) => {
console.log(i, a);
});
//0 "one"
//1 "two"
//2 "three"
//...
const nums = [1, 2, 3, 4, 5];
const square = nums.map(num => num * num);
console.log(square)
// [1, 4, 9, 16, 25]
const nums = [1, 2, 3, 4, 5];
const even = nums.filter(num => num % 2 === 0);
console.log(even)
// [2, 4]
const nums = [1, 2, 3, 4, 5];
const sum = nums.reduce((acc,num) => acc += num);
console.log(sum)
// 15
const nums = [1, 2, 3, 4, 5];
// 초기값 100
const sum = nums.reduce((acc,num) => acc += num, 100);
console.log(sum)
// 115
const nums = [1, 2, 3, 4, 5];
const oddnum = nums.reduce((acc,num) => {
if (num % 2 === 1) {
acc.push(num) // 홀수일 때 push
}
return acc // acc를 리턴
}, []); // 초기값 = []
console.log(oddnum)
// [1, 3, 5]
const nums = [1, 2, 3, 4, 5];
let sum = nums.reduceRight((acc, cur, index, array) => { // array = nums (원본 배열)
console.log('index=',index, 'acc=',acc, 'cur=',cur);
if (index === 0) { // 마지막 항 도달시
return (acc + cur) / array.length; // 평균 계산
}
return acc + cur; // 합 계산
}, 0);
console.log('sum=',sum)
// "index=" 2 "acc=" 0 "cur=" 3
// "index=" 1 "acc=" 3 "cur=" 2
// "index=" 0 "acc=" 5 "cur=" 1
// "sum=" 2
순차처리
entries()를 쓰면 내부 배열이 [인덱스, 값]
모양 이터레이터로 바뀐다
const arr = ['one', 'two', 'three', 'four', 'five', 'six'];
for (const [i, a] of arr.entries()) {
console.log(i, a);
}
//0 "one"
//1 "two"
//2 "three"
//...
새로운 배열을 반환
arr.slice(start [, end])
const arr = ['one', 'two', 'three', 'four', 'five', 'six'];
console.log(arr.slice(4))
//["five", "six"]
const arr = ['one', 'two', 'three', 'four', 'five', 'six'];
console.log(arr.slice(1, 3))
// ["two", "three"]
const arr = ['one', 'two', 'three', 'four', 'five', 'six'];
console.log(arr.slice(-2))
// 끝에서 2개 전 이후 모두
// ["five", "six"]
const arr = ['one', 'two', 'three', 'four', 'five', 'six'];
console.log(arr.slice(-5, -3))
// 끝에서 5개 전부터 끝에서 3개전까지
// ["two", "three"]
원본 배열 자체를 수정
arr.splice(start(, deleteCount(, element)))
const arr = ['one', 'two', 'three', 'four', 'five', 'six'];
//인덱스3 이후 제거
console.log(arr.splice(4))
//['five', 'six']
console.log(arr)
//['one', 'two', 'three', 'four]
const arr = ['one', 'two', 'three', 'four];
//인덱스1부터 항목 2개 제거
console.log(arr.splice(1, 2));
//['two', 'three']
console.log(arr)
//['one', 'four']
const arr = ['one', 'four'];
//인덱스1부터 0개 항목을 'seven'으로 치환 => 그냥 추가
arr.splice(1, 0, 'seven');
console.log(arr);
//['one', 'seven', 'four']
//인덱스1부터 2개 항목을 'eight'으로 치환
console.log(arr.splice(1, 2, 'eight'));
//['seven', 'four']
console.log(arr)
//['one', 'eight']
const arr = ['one', 'two', 'three', 'four'];
console.log(arr.find(element => element.length === 4));
//'four'
const arr = ['one', 'two', 'three', 'four'];
console.log(arr.findIndex(element => element.length === 4));
//3
arr.indexOf(searchElement(, fromIndex))
const arr = ['one', 'four', 'two', 'three', 'four'];
console.log(arr.indexOf('four'));
//1
console.log(arr.indexOf('four', 2)); //index2 이후에서 탐색
//4
const arr = ['one', 'two', 'three', 'four'];
console.log(arr.pop())
// 'four'
console.log(arr)
// ['one', 'two', 'three']
const arr = ['one', 'two', 'three', 'four'];
arr.push('five')
console.log(arr)
// ['one', 'two', 'three', 'four', 'five']
const arr = ['one', 'two', 'three', 'four'];
console.log(arr.shift())
// 'one'
console.log(arr)
// ['two', 'three', 'four']
const arr = ['one', 'two', 'three', 'four'];
arr.unshift('zero')
console.log(arr)
// ['zero', 'one', 'two', 'three', 'four']
원본 배열은 그대로
const arr1 = [1, 2, 3];
const arr2 = [4, 5, 6];
const concatenated = arr1.concat(arr2);
console.log(concatenated);
// [1, 2, 3, 4, 5, 6]
,
const array = [1, 2, 3, 4, 5];
console.log(array.join());
// 1,2,3,4,5
console.log(array.join(' '));
// 1 2 3 4 5
console.log(array.join(', '));
// 1, 2, 3, 4, 5
항목을 포함하는지 체크
const arr1 = [1, 2, 3];
console.log(arr1.includes(2))
//true
let arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
console.log(arr);
/*
[
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
*/
let reversed = [...arr].reverse();
console.log(reversed);
/*
[
[7, 8, 9],
[4, 5, 6],
[1, 2, 3]
]
*/
let arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
let reversed = [...arr].reverse(); //arr는 변경하지 않고 새로운 배열 생성
// arr를 90도 회전
let rotated = Object.keys(reversed[0]).map(col => reversed.map(row=>row[col]));
console.log(rotated);
/*
[
[7, 4, 1],
[8, 5, 2],
[9, 6, 3]
]
*/
let arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
function rotate90(arr) {
N = arr.length;
let res = new Array(N).fill().map((v) => new Array(N).fill(0));
for (let i = 0; i < N; i++) {
for (let j = 0; j < N; j++) {
res[j][N - 1 - i] = arr[i][j];
}
}
return res;
}