반응형
1. array를 object로 빠르게 만들기
var arr = ['mon', 'tue', 'wed'];
var obj = {...arr}; // {0: "mon", 1: "tue", 2: "wed"}
2. 두개 이상 array를 병합하기(concat, push말고)
var arr1 = [1, 2, {name: 'jj'}];
var arr2 = [3, 4, [5, 6]];
var mergeArr = [...arr1, ...arr2]; // [1, 2, {name: 'jj'}, 3, 4, [5, 6]]
3. map()쓰지 않고 특정 value만 꺼내기
var students = [
{name: 'hobs', age: 33},
{name: 'marry', age: 54},
{name: 'jacob', age: 23}
];
var aa = Array.from(students, (v) => v.name);
4. 중복값 아예 거르기
var arr = ['mon', 'tue', 'wed', 'mon', 'sun'];
var newArr = arr.filter((item) => arr.indexOf(item) === arr.lastIndexOf(item)); // ["tue", "wed", "sun"]
원리는
'mon'이 하나만 있다면 indexOf와 lastIndexOf가 동일할것임을 이용하는것임.
둘이 일치하면 해당 array에 1개만 있다는 의미라서 남겨두고,
일치하지 않으면 버려버림.
5. 중복값 하나만 거르기
var arr = ['mon', 'tue', 'wed', 'mon', 'sun'];
// 1. new Set()
var newArr1 = [...new Set(arr)];
var newArr2 = Array.from(new Set(arr));
// 2. filter()
var newArr3 = arr.filter((item, index) => arr.indexOf(item) === index);
2번 원리는
arr.indexOf(item) = arr에서 찾은 'mon'의 인덱스
와
index = 'mon'의 인덱스
를 비교하는 것임.
문제는 3번째 인덱스인 'mon'은
arr.indexOf(item) = 0이고
index = 3으로 나오기때문에
불일치해서 filter에 걸리지못하고 빠짐.
그래서 중복값이 걸러지는 것임.
6. 두개 이상 array에서 서로 중복값인걸 찾기
var arr1 = [0, 2, 4, 6, 8, 8];
var arr2 = [1, 2, 3, 4, 5, 6];
// 먼저 위에 쓴 4번 작업을 해줌.
arr1 = arr1.filter((item, index) => arr1.indexOf(item) === index); // [0, 2, 4, 6, 8]
var mergeArr = arr1.filter((item) => arr2.includes(item)); // [2, 4, 6]
7. falsy 값만 걸러내기
var arr = [0, “blue”, “”, NaN, 9, true, undefined, “white”, false];
var trueArr = arr.filter(Boolean); // [“blue”, 9, true, “white”]
8. 랜덤값 나오게하기
var num = [1,2,3,4,5];
var randomNum = num[(Math.floor(Math.random() * (num.length)))]
사실 총 13개인데 8개만 적어봄
www.blog.duomly.com/13-useful-javascript-array-tips-and-tricks-you-should-know/
'Javascript' 카테고리의 다른 글
var/let/const 차이점, undefined/null 차이점, arrow function이란, 실행 컨텍스트란 (0) | 2021.01.18 |
---|---|
🌟추천🌟😈함수 안과 밖에서 원시값은 어떻게 달라질까? (0) | 2021.01.18 |
🌟추천🌟원시값과 참조값, 그리고 mutate와 assignment (0) | 2020.12.26 |
array 메소드 기본 정리 (0) | 2020.12.07 |
😭원시값, 객체, undefined, false, 연산자... (0) | 2020.11.08 |