본문 바로가기
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