자바스크립트 함수형 프로그래밍 - each, filter, map

코더·2019년 1월 22일
0

data

<script>
  var users = [
      { name: "a", age:14 },
      { name: "b", age:31 },
      { name: "c", age:30 },
      { name: "d", age:35 },
      { name: "e", age:38 },
      { name: "f", age:40 },
      { name: "g", age:39 },
      { name: "h", age:41 },
      { name: "i", age:58 },
      { name: "j", age:48 },
      { name: "k", age:49 }
  ];
</script>

each

  • Array.prototype.forEach 기능 구현
<script>
   function _each(list, func) {
        for (var i = 0, endi = list.length; i < endi; ++i) {
            func(list[i], i)
        }
    }
    // use
    _each(users, function(item, index, list){
		console.log(item, index, list)
	});
</script>

filter

  • Array.prototype.filter 기능 구현
<script>
    function _filter(list, func) {
        var ret = [];
        _each(list, function (item, index) {
            if (func(item, index)) {
                ret.push(item)
            }
        })
        return ret;
    }
    // use - 40세 이상 
    var result = _filter(
    	users,
        function(item, index, list){
        	return item.age >= 40
        }
    );
    console.log(result);
</script>

map

  • Array.prototype.map 기능 구현
<script>
    function _map(list, func) {
        var ret = [];
        _each(list, function (item, index) {
            ret.push(func(item, index));
        })
        return ret;
    }
    // use - 성별 가져오기
    var result = _map(users,
    	function(item, index, list){
			return item.age
        }
    );
    console.log(result);
</script>

filter, map 응용

<script>
  // 40세 이상 이름 필터
  var result = _map(
    _filter(users, function(item, index, list){
        return item.age >= 40;
    }),
	function(item, index, list){
		return item.name;
	}
  )
  console.log(result);
</script>

0개의 댓글

관련 채용 정보