TIL/TIL
Array Method
by koreashowme
2020. 1. 21.
describe("Array Method에 관하여", function() {
it("'filter' method에 관해 학습합니다.", function() {
// filter => 조건을 줄 때 사용하면 편의함. 원본은 건드리지 않음.
let numbers = [1, 2, 3];
let odd = numbers.filter(function(x) {
return x % 2 !== 0; // 홀수 뽑기
});
expect(odd).toEqual([1, 3]); // true, false, true => true값만 return
expect(odd.length).toBe(2);
expect(numbers.length).toBe(3);
});
it("'map' method에 관해 학습합니다.", function() {
// map => 새로운 배열을 만들 때 사용(1:1 매핑 시켜줌). 원본은 건드리지 않음.
let numbers = [1, 2, 3];
let numbersPlus1 = numbers.map(function(x) {
return x + 1;
});
expect(numbersPlus1).toEqual([2, 3, 4]);
expect(numbers).toEqual([1, 2, 3]);
});
it("'reduce' method에 관해 학습합니다.", function() {
// reduce => return 초기값 + 축적값, 사용하면 편의함. * 초기값을 주지 않으면 자동으로 0번째 인덱스 값이 적용됨.
// 초기값을 줄 수 있는 것이 강력한 파워 => { }, [ ] 객체, 배열을 초기값으로 줄 수 있음 => map, filter 역할이 가능함.
// 초기값을 준 후, 조건을 주면 => filter
// 초기값을 준 후, 1:1 매핑만 시켜주면 => map
// 반복 되는 모든 것들은 reduce를 사용할 수 있다.
let numbers = [1, 2, 3];
let reduction = numbers.reduce(function(memo, x) {
return memo + x;
}, 0);
expect(reduction).toBe(6);
expect(numbers).toEqual([1, 2, 3]);
});
it("'forEach' method에 관해 학습합니다.", function() {
// forEach => 빈 배열 push해서 매핑하여 자주 사용한다.
let numbers = [1, 2, 3];
let result = [];
let isEven = function(item) {
result.push(item % 2 === 0);
};
numbers.forEach(isEven);
expect(result).toEqual([false, true, false]);
expect(numbers).toEqual([1, 2, 3]);
});
it("'every' method에 관해 학습합니다.", function() {
// every => 모든 조건을 pass하면 => return true => or false
let onlyEven = [2, 4, 6];
let mixedBag = [2, 4, 5, 6];
let isEven = function(x) {
return x % 2 === 0;
};
expect(onlyEven.every(isEven)).toBe(true);
expect(mixedBag.every(isEven)).toBe(false);
});
it("'some' method에 관해 학습합니다.", function() {
// some 몇가지 조건 pass => return true;
let onlyEven = [2, 4, 6];
let mixedBag = [2, 4, 5, 6];
let isEven = function(x) {
return x % 2 === 0;
};
expect(onlyEven.some(isEven)).toBe(true);
expect(mixedBag.some(isEven)).toBe(true);
});
it("2개의 method를 연속적으로 사용하는 방법에 관해 학습합니다.", function() {
let result = [0, 1, 2]
.map(function(x) {
return x + 1; // [1, 2, 3]
})
.reduce(function(sum, x) {
return sum + x;
});
expect(result).toEqual(6);
});
});
comment