Miêu tả Array reduce() trong JavaScript

Phương thức array reduce() trong Javascript áp dụng một hàm đồng thời với hai giá trị của mảng (từ trái qua phải) khi để giảm nó tới một giá trị đơn.

Cú pháp Array reduce() trong JavaScript

Cú pháp của nó như sau

array.reduce(callback[, initialValue]);

Chi tiết về tham số

  • callback − Hàm thực thi trên mỗi giá trị của mảng.
  • initialValue − Đối tượng được sử dụng như là tham số đầu tiên tới lần gọi đầu của callback.

Trả về giá trị

  • Trả về giá trị đơn đã giảm của mảng.

Khả năng tương thích

  • Phương thức này là một phần JavaScript bổ sung tới chuẩn ECMA-262. Để khiến nó làm việc, bạn thêm code sau vào phần trên cùng của script của bạn.
if (!Array.prototype.reduce)
{
   Array.prototype.reduce = function(fun /*, initial*/)
   {
      var len = this.length;

      if (typeof fun != "function")
      throw new TypeError();

      // no value to return if no initial value and an empty array
      if (len == 0 && arguments.length == 1)
      throw new TypeError();

      var i = 0;
      if (arguments.length >= 2)
      {
         var rv = arguments[1];
      }
      else
      {
         do
         {
            if (i in this)
            {
               rv = this[i++];
               break;
            }

            // if array contains no values, no initial value to return
            if (++i >= len)
            throw new TypeError();
         }
         while (true);
      }
      for (; i < len; i++)
      {
         if (i in this)
         rv = fun.call(null, rv, this[i], i, this);
      }
      return rv;
   };
}

Ví dụ minh họa Array reduce() trong JavaScript

<html>
   <head>
      <title>JavaScript Array reduce Method</title>
   </head>

   <body>

      <script type="text/javascript">
         if (!Array.prototype.reduce)
         {
            Array.prototype.reduce = function(fun /*, initial*/)
            {
               var len = this.length;

               if (typeof fun != "function")
               throw new TypeError();

               // no value to return if no initial value and an empty array
               if (len == 0 && arguments.length == 1)
               throw new TypeError();

               var i = 0;
               if (arguments.length >= 2)
               {
                  var rv = arguments[1];
               }
               else
               {
                  do
                  {
                     if (i in this)
                     {
                        rv = this[i++];
                        break;
                     }
                     // if array contains no values, no initial value to return
                     if (++i >= len)
                     throw new TypeError();
                  }
                  while (true);
               }

               for (; i < len; i++)
               {
                  if (i in this)
                  rv = fun.call(null, rv, this[i], i, this);
               }
               return rv;
            };
         }
         var total = [0, 1, 2, 3].reduce(function(a, b){ return a + b; });
         document.write("total is : " + total ); 
      </script>

   </body>
</html>

Kết quả

total is : 6

Viết câu trả lời

Drop Images

0 Bình luận