e.g.1
// 정수 배열에서 5의 배수인 정수만 모으기
var arr = [4, 15, 377, 395, 400, 1024, 3000];
var arr2 = arr.filter(function (n) {
return n % 5 == 0; // arr에서 5로 나눴을때 나머지가 0이 되는 요소들을 거른다.
});
console.log(arr2); // [15, 395, 400, 3000]
e.g.2
var arr = [4, 377, 1024];
var arr2 = arr.filter(function (n) {
return n % 5 == 0;
});
console.log(arr2); // []
e.g. 3
// 5의 배수만 구해서 각 요소를 2배
var arr = [4, 15, 377, 395, 400, 1024, 3000];
var arr2 = arr.filter(function (n) {
return n % 5 == 0;
}).map(function (n) {
return n * 2;
});
console.log(arr2); // [30, 790, 800, 6000]
e.g.4
// 5의 배수만 구해서 각 요소를 2배
var arr = [4, 377, 1024]; // 5의 배수가 없음.
var arr2 = arr.filter(function (n) {
return n % 5 == 0;
}).map(function (n) { // filter로부터 빈 배열이 반환됨.
return n * 2;
});
console.log(arr2); // []. map의 콜백 함수는 결국 한 번도 호출되지 않았으나 문제 없음.
e.g.5
// 기본 Function 사용
const smallNumbers = randomNumbers.filter(function (number){
return number < 250;
}) ;
// Arrow Function 사용
const smallNumbers = randomNumbers.filter(number => {return number < 250});
e.g.6
const words = ['unique', 'uncanny', 'pique', 'oxymoron', 'guise'];
const interestingWords = words.filter(
words => {
return words.length > 5
});
const jumbledNums = [123, 25, 78, 5, 9];
const lessThanTen = jumbledNums.findIndex(num => {
return num < 10;
});
e.g. 1
const animals = ['hippo', 'tiger', 'lion', 'seal', 'cheetah', 'monkey', 'salamander', 'elephant'];
// 일반 함수 if 를 사용한것
const foundAnimal = animals.findIndex(function(val) {
if (val === 'elephant') {
return val;
}
});
// 화살표 함수를 사용한것
const foundAnimal = animals.findIndex(val => {
return val === 'elephant';
});
위의 예시에서 어차피 index 가 조건을 충족하는 값을 찾는 조건문이나 마찬가지이기 때문에 if 없이 화살표 함수로 써도 작동한다.
const animals = ['hippo', 'tiger', 'lion', 'seal', 'cheetah', 'monkey', 'salamander', 'elephant'];
const startsWithS = animals.findIndex(animal => {
return animal[0] === 's' ? true : false;
});
// animal 의 첫번째 index 가 s 인가? true 또는 false 의 값이 return 되어 나오고, findIndex 에게 전해질것. 실질적으로 true false 가 의미하는 바는 없다.
const startsWithS = animals.findIndex(animal => animal.charAt(0) === 's');
// 이렇게 쓰는게 더 간결하고 좋은 코드인것같다.
e.g.1
const newNumbers = [1, 3, 5, 7];
const newSum = newNumbers.reduce((accumulator, currentValue) => {
console.log('The value of accumulator: ', accumulator);
console.log('The value of currentValue: ', currentValue);
return accumulator + currentValue;
});
console.log(newSum) // 16 출력
e.g.2
const newNumbers = [1, 3, 5, 7];
const newSum = newNumbers.reduce((accumulator, currentValue) => {
console.log('The value of accumulator: ', accumulator);
console.log('The value of currentValue: ', currentValue);
return accumulator + currentValue;
}, 10);
console.log(newSum)
e.g.3
const cities = ['Orlando', 'Dubai', 'Edinburgh', 'Chennai', 'Accra', 'Denver', 'Eskisehir', 'Medellin', 'Yokohama'];
const word = cities.reduce((acc, currVal) => {
return acc + currVal[0]
}, "C");
// CODECADEMY 출력
"C" 가 acc 자리로 가고, currVal 는 cities 배열내 요소들의 index 0 인 letter를 받는다.
const array = [1, 2, 3, 4, 5];
// checks whether an element is even
const even = (element) => element % 2 === 0;
console.log(array.some(even));
some 메소드는 조건을 만족하는 요소가 한개라도 배열 안에 있는지를 살펴본다. output 으로 Boolean 을 뱉어낸다.
const isBelowThreshold = (currentValue) => currentValue < 40;
const array1 = [1, 30, 39, 29, 10, 13];
console.log(array1.every(isBelowThreshold));
// expected output: true
every 메소드는 array 안에 있는 모든 요소가 함수에서 제시한 조건을 통과하는지를 알려준다. output 으로 Boolean 값을 뱉어낸다.
참고: Array method 리스트
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array#Iteration_methods