code: function reduce(O, _fn) {
              var i, l, tokenItem;
              if (isArray(O)) {
                  i = 0, l = O.length, tokenItem = O[i];
                  for (; i < l - 1;) {
                      if (typeof O[i] != "undefined") {
                          if ((tokenItem = _fn.call(root, tokenItem, O[++i])) === false) break;
                      }
                  }
                  return tokenItem;
              } else if (isObject(O)) {
                  for (i in O) {
                      if (typeof O[i] != "undefined") {
                          if ((tokenItem = _fn.call(root, tokenItem, O[i])) === false) break;
                      }
                  }
                  return tokenItem;
              } else {
                  console.error("argument error : ax5.util.reduce - use Array or Object");
                  return null;
              }
          }
docs: 배열의 왼쪽에서 오른쪽으로 연산을 진행하는데 수행한 결과가 왼쪽 값으로 반영되어 최종 왼쪽 값을 반환합니다.
  @method ax5.util.reduce
  @param {Array|Object} O
  @param {Function} _fn
  @returns {Alltypes}
  @example
  ```js
  var aarray = [5,4,3,2,1];
  result = ax5.util.reduce( aarray, function(p, n){
  return p * n;
  });
  console.log(result, aarray);
  // 120 [5, 4, 3, 2, 1]
  
  ax5.util.reduce({a:1, b:2}, function(p, n){
  return parseInt(p|0) + parseInt(n);
  });
  // 3
  ```