====== JavaScript Array filter() ======
* description : JavaScript Array filter()
* author : 오션
* email : shlim@repia.com
* lastupdate : 2023-01-17 Tue
\\
===== Definition and Usage =====
''**filter()**'' 메소드는 함수로 제공된 테스트를 통과한 요소들의 새로운 배열을 생성합니다.\\
''**filter()**'' 메소드는 비어있는 요소들에 대해 함수를 실행하지 않습니다.\\
''**filter()**'' 메소드는 원본 배열을 변경하지 않습니다.\\
===== Syntax =====
arr.filter(callback(element[, index[, array]])[, thisArg]); // from mdn web docs Array.prototype.filter()
array.filter(function(currentValue, index, arr), thisValue); // from w3schools JS Array filter()
===== Parameter =====
^ Parameter ^ Description ^
| function() | 필수, 배열의 각 요소에 대해 실행할 함수 |
| currentValue | 필수, 현재 요소의 값 |
| index | 선택, 현재 요소의 인덱스 |
| arr | 선택, 현재 요소의 배얼 |
| thisValue | 선택, Default는 ''**undefined**''\\ ''**this**'' value로 함수에 전달될 값 |
\\
===== Example =====
하기 코드에서 화살표 함수로 변환 과정을 확인\\
const ages = [32, 33, 16, 40];
const filtered = ages.filter(function(age){return age >= 18;});
console.log(filtered); // [ 32, 33, 40 ]
console.log(typeof filtered); // object
console.log(Array.isArray(filtered)); // true
const filtered2 = ages.filter((age) => {return age >=18;});
console.log(filtered2); // [ 32, 33, 40 ]
const filtered3 = ages.filter((age) => age >= 18);
console.log(filtered3); // [ 32, 33, 40 ]
const filtered4 = ages.filter(age => age >= 18);
console.log(filtered4); // [ 32, 33, 40 ]
\\
Apps chart.js사용 시 업무 분류별 등록된 업무 프로세스의 개수 구하기\\
==== Ex1 ====
let devCount = '0';
let cmmnCount = '0';
let mntnCount = '0';
let projCount = '0';
let cmpyCount = '0';
for (let k = 0; k < data.checklistVO.length; k++) {
if(data.checklistVO[k].checklistCat === '2') {
devCount++;
}
if(data.checklistVO[k].checklistCat === '3') {
cmmnCount++;
}
if(data.checklistVO[k].checklistCat === '4') {
mntnCount++;
}
if(data.checklistVO[k].checklistCat === '5') {
projCount++;
}
if(data.checklistVO[k].checklistCat === '6') {
cmpyCount++;
}
}
\\
==== Ex2 ====
let checklistObj = data.checklistVO;
let devCount = '0';
let cmmnCount = '0';
let mntnCount = '0';
let projCount = '0';
let cmpyCount = '0';
for (let k = 0; k < checklistObj.length; k++) {
if(checklistObj[k]['checklistCat'] === '2') {
devCount++;
}
if(checklistObj[k]['checklistCat'] === '3') {
cmmnCount++;
}
if(checklistObj[k]['checklistCat'] === '4') {
mntnCount++;
}
if(checklistObj[k]['checklistCat'] === '5') {
projCount++;
}
if(checklistObj[k]['checklistCat'] === '6') {
cmpyCount++;
}
}
\\
==== Ex3 ====
let checklistObj = data.checklistVO;
let devCount = '0';
let cmmnCount = '0';
let mntnCount = '0';
let projCount = '0';
let cmpyCount = '0';
// checklistObj 배열에서 checklistCat === 2 인 요소들의 배열을 신규 생성해서 해당 배열의 길이 값을 변수 devCount에 대입
devCount = (checklistObj.filter(item => item['checklistCat'] === '2')).length;
cmmnCount = (checklistObj.filter(item => item['checklistCat'] === '3')).length;
mntnCount = (checklistObj.filter(item => item['checklistCat'] === '4')).length;
projCount = (checklistObj.filter(item => item['checklistCat'] === '5')).length;
cmpyCount = (checklistObj.filter(item => item['checklistCat'] === '6')).length;
==== Ref Link ====
[[https://developer-talk.tistory.com/114|[JavaScript]배열에서 특정 값의 개수]]\\
[[https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/filter|Array.prototype.filter()]]\\
[[https://www.w3schools.com/jsref/jsref_filter.asp|JavaScript Array filter()]]
{{tag>오션 filter()}}