Mẫu tích lũy trong Python

Mẫu tích lũy là một cách xây dựng hoặc tích lũy dữ liệu. Ví dụ đơn giản nhất về bộ tích lũy là một vòng lặp trên Mảng số để tính tổng các giá trị của chúng. Ở đây chúng tôi đang giảm một Mảng các phần tử số thành một phần tử số duy nhất

Trước tiên hãy xem xét nó từ cách tiếp cận bắt buộc

const numbers = [1, 2, 3, 4];

let sum = 0;
for (let index = 0; index < numbers.length; ++index) {
  const number = numbers[index];
  sum = sum + number;
}

console.log(sum);

Điều gì sẽ xảy ra nếu khối vòng lặp được biến thành một chức năng? . Nói cách khác, nó nhận một phần tử tích lũy và phần tử tiếp theo trong mảng và trả về phần tử tích lũy mới

const getNewSum = (previousSum, currentElement) => {
  return previousSum + currentElement;
}

const numbers = [1, 2, 3, 4];

let sum = 0;
for (let index = 0; index < numbers.length; ++index) {
  const number = numbers[index];
  sum = getNewSum(sum, number);
}

console.log(sum);

Điều gì sẽ xảy ra nếu chúng ta biến toàn bộ hoạt động, cả vòng lặp và khối bên trong của nó, thành một hàm. Những loại đối số nó sẽ mất? . Một là Mảng các phần tử số và phần còn lại là giá trị ban đầu cho bộ tích lũy (tổng của chúng tôi)

const numbers = [1, 2, 3, 4];

const getNewSum = (previousSum, currentElement) => {
  return previousSum + currentElement;
}

const reduceSum = (arr, accumulatorCallback, initialValue) => {
  for (let index = 0; index < numbers.length; ++index) {
    const number = numbers[index];
    initialValue = accumulatorCallback(initialValue, number);
  }

  return initialValue;
}

let sum = 0;
const finalSum = reduceSum(numbers, getNewSum, sum);
console.log(finalSum);

Với định nghĩa cuối cùng này, chúng ta đã tiến gần đến cách thức hoạt động của phương thức

const getNewSum = (previousSum, currentElement) => {
  return previousSum + currentElement;
}

const numbers = [1, 2, 3, 4];

let sum = 0;
for (let index = 0; index < numbers.length; ++index) {
  const number = numbers[index];
  sum = getNewSum(sum, number);
}

console.log(sum);
9 thực tế. Một điểm khác biệt chính là nó nhận được một Mảng được truyền dưới dạng đối số trong khi phương thức
const getNewSum = (previousSum, currentElement) => {
  return previousSum + currentElement;
}

const numbers = [1, 2, 3, 4];

let sum = 0;
for (let index = 0; index < numbers.length; ++index) {
  const number = numbers[index];
  sum = getNewSum(sum, number);
}

console.log(sum);
9 được gọi trên Mảng như
const numbers = [1, 2, 3, 4];

const getNewSum = (previousSum, currentElement) => {
  return previousSum + currentElement;
}

const reduceSum = (arr, accumulatorCallback, initialValue) => {
  for (let index = 0; index < numbers.length; ++index) {
    const number = numbers[index];
    initialValue = accumulatorCallback(initialValue, number);
  }

  return initialValue;
}

let sum = 0;
const finalSum = reduceSum(numbers, getNewSum, sum);
console.log(finalSum);
1

Hãy xem chức năng này đang làm gì. Nó nhận được một Mảng để lặp lại. Nó khai báo một biến bộ tích lũy (có thể gán lại bởi

const numbers = [1, 2, 3, 4];

const getNewSum = (previousSum, currentElement) => {
  return previousSum + currentElement;
}

const reduceSum = (arr, accumulatorCallback, initialValue) => {
  for (let index = 0; index < numbers.length; ++index) {
    const number = numbers[index];
    initialValue = accumulatorCallback(initialValue, number);
  }

  return initialValue;
}

let sum = 0;
const finalSum = reduceSum(numbers, getNewSum, sum);
console.log(finalSum);
2) và gán cho nó một giá trị ban đầu, trong trường hợp này là 0 cho bộ tích lũy
const numbers = [1, 2, 3, 4];

const getNewSum = (previousSum, currentElement) => {
  return previousSum + currentElement;
}

const reduceSum = (arr, accumulatorCallback, initialValue) => {
  for (let index = 0; index < numbers.length; ++index) {
    const number = numbers[index];
    initialValue = accumulatorCallback(initialValue, number);
  }

  return initialValue;
}

let sum = 0;
const finalSum = reduceSum(numbers, getNewSum, sum);
console.log(finalSum);
3 của chúng ta. Sau đó, nó lặp lại Mảng và gán lại
const numbers = [1, 2, 3, 4];

const getNewSum = (previousSum, currentElement) => {
  return previousSum + currentElement;
}

const reduceSum = (arr, accumulatorCallback, initialValue) => {
  for (let index = 0; index < numbers.length; ++index) {
    const number = numbers[index];
    initialValue = accumulatorCallback(initialValue, number);
  }

  return initialValue;
}

let sum = 0;
const finalSum = reduceSum(numbers, getNewSum, sum);
console.log(finalSum);
3 trước đó cho một giá trị mới được lấy từ
const numbers = [1, 2, 3, 4];

const getNewSum = (previousSum, currentElement) => {
  return previousSum + currentElement;
}

const reduceSum = (arr, accumulatorCallback, initialValue) => {
  for (let index = 0; index < numbers.length; ++index) {
    const number = numbers[index];
    initialValue = accumulatorCallback(initialValue, number);
  }

  return initialValue;
}

let sum = 0;
const finalSum = reduceSum(numbers, getNewSum, sum);
console.log(finalSum);
3 trước đó và phần tử hiện tại

Nói cách khác, nó gán lại giá trị bộ tích lũy cho giá trị được trả về bởi hàm gọi lại,

const numbers = [1, 2, 3, 4];

const getNewSum = (previousSum, currentElement) => {
  return previousSum + currentElement;
}

const reduceSum = (arr, accumulatorCallback, initialValue) => {
  for (let index = 0; index < numbers.length; ++index) {
    const number = numbers[index];
    initialValue = accumulatorCallback(initialValue, number);
  }

  return initialValue;
}

let sum = 0;
const finalSum = reduceSum(numbers, getNewSum, sum);
console.log(finalSum);
6. Trong trường hợp này, chúng tôi đã xác định cuộc gọi lại là cộng tổng trước đó vào số hiện tại. Nhưng chúng ta có thể dễ dàng định nghĩa nó có bất kỳ hướng dẫn nào khác

Tất cả các bộ giảm tốc của chúng tôi,

const numbers = [1, 2, 3, 4];

const getNewSum = (previousSum, currentElement) => {
  return previousSum + currentElement;
}

const reduceSum = (arr, accumulatorCallback, initialValue) => {
  for (let index = 0; index < numbers.length; ++index) {
    const number = numbers[index];
    initialValue = accumulatorCallback(initialValue, number);
  }

  return initialValue;
}

let sum = 0;
const finalSum = reduceSum(numbers, getNewSum, sum);
console.log(finalSum);
7 quan tâm đến là một Mảng giá trị và một hàm gọi lại xác định cách đánh giá tích lũy

Để làm bằng chứng, hãy cho thấy việc hoán đổi một hàm gọi lại mới hiện tính toán tích của các số trong Mảng dễ dàng như thế nào. Trong khi cũng sử dụng cùng một hàm rút gọn để tính tổng như chúng ta đã có trước đây

Chúng tôi sẽ giữ nguyên tất cả các logic khác bên cạnh việc khái quát hóa cách đặt tên của chúng tôi để giúp chúng tôi hiểu rõ hơn về

const getNewSum = (previousSum, currentElement) => {
  return previousSum + currentElement;
}

const numbers = [1, 2, 3, 4];

let sum = 0;
for (let index = 0; index < numbers.length; ++index) {
  const number = numbers[index];
  sum = getNewSum(sum, number);
}

console.log(sum);
9

const getNewSum = (previousSum, currentElement) => {
  return previousSum + currentElement;
}

const numbers = [1, 2, 3, 4];

let sum = 0;
for (let index = 0; index < numbers.length; ++index) {
  const number = numbers[index];
  sum = getNewSum(sum, number);
}

console.log(sum);
3

Bây giờ rõ ràng mục đích của

const getNewSum = (previousSum, currentElement) => {
  return previousSum + currentElement;
}

const numbers = [1, 2, 3, 4];

let sum = 0;
for (let index = 0; index < numbers.length; ++index) {
  const number = numbers[index];
  sum = getNewSum(sum, number);
}

console.log(sum);
9 là gì. lặp lại một Mảng và giảm các phần tử của nó thành một phần tử duy nhất. Trong những trường hợp này, chúng tôi rút gọn một Mảng số thành tích và tổng (phần tử số). Nhưng chúng ta sẽ thấy nhiều ví dụ khác trong tương lai làm tăng độ phức tạp nhưng cung cấp mức giảm mã tương đương

Hai điểm khác biệt chính giữa ví dụ của chúng ta và bản thân

const getNewSum = (previousSum, currentElement) => {
  return previousSum + currentElement;
}

const numbers = [1, 2, 3, 4];

let sum = 0;
for (let index = 0; index < numbers.length; ++index) {
  const number = numbers[index];
  sum = getNewSum(sum, number);
}

console.log(sum);
9 là các tham số
const getNewSum = (previousSum, currentElement) => {
  return previousSum + currentElement;
}

const numbers = [1, 2, 3, 4];

let sum = 0;
for (let index = 0; index < numbers.length; ++index) {
  const number = numbers[index];
  sum = getNewSum(sum, number);
}

console.log(sum);
31 và
const getNewSum = (previousSum, currentElement) => {
  return previousSum + currentElement;
}

const numbers = [1, 2, 3, 4];

let sum = 0;
for (let index = 0; index < numbers.length; ++index) {
  const number = numbers[index];
  sum = getNewSum(sum, number);
}

console.log(sum);
32. Khi sử dụng phương thức
const getNewSum = (previousSum, currentElement) => {
  return previousSum + currentElement;
}

const numbers = [1, 2, 3, 4];

let sum = 0;
for (let index = 0; index < numbers.length; ++index) {
  const number = numbers[index];
  sum = getNewSum(sum, number);
}

console.log(sum);
9 của chúng tôi, chúng tôi gọi nó trên Mảng và giá trị ban đầu được cung cấp dưới dạng đối số. Tuy nhiên, giá trị ban đầu không được xác định và gán bên ngoài, bạn chỉ cần cung cấp giá trị và phương thức sẽ quản lý việc gán và gán lại trong khi lặp lại. Điều này giúp chúng tôi tránh các đột biến bên ngoài của các biến chống mẫu

Cuối cùng chúng ta hãy khám phá cách thức hoạt động của phương thức

const getNewSum = (previousSum, currentElement) => {
  return previousSum + currentElement;
}

const numbers = [1, 2, 3, 4];

let sum = 0;
for (let index = 0; index < numbers.length; ++index) {
  const number = numbers[index];
  sum = getNewSum(sum, number);
}

console.log(sum);
9 từ chữ ký hàm của nó đến hàm gọi lại. Giảm có một chữ ký duy nhất trong số tất cả các phương thức Array, nó nhận cả giá trị gọi lại và giá trị ban đầu

  • Chữ ký.
    const getNewSum = (previousSum, currentElement) => {
      return previousSum + currentElement;
    }
    
    const numbers = [1, 2, 3, 4];
    
    let sum = 0;
    for (let index = 0; index < numbers.length; ++index) {
      const number = numbers[index];
      sum = getNewSum(sum, number);
    }
    
    console.log(sum);
    35
  • const getNewSum = (previousSum, currentElement) => {
      return previousSum + currentElement;
    }
    
    const numbers = [1, 2, 3, 4];
    
    let sum = 0;
    for (let index = 0; index < numbers.length; ++index) {
      const number = numbers[index];
      sum = getNewSum(sum, number);
    }
    
    console.log(sum);
    36
    • Chữ ký.
      const getNewSum = (previousSum, currentElement) => {
        return previousSum + currentElement;
      }
      
      const numbers = [1, 2, 3, 4];
      
      let sum = 0;
      for (let index = 0; index < numbers.length; ++index) {
        const number = numbers[index];
        sum = getNewSum(sum, number);
      }
      
      console.log(sum);
      37
      • thường được viết tắt là
        const getNewSum = (previousSum, currentElement) => {
          return previousSum + currentElement;
        }
        
        const numbers = [1, 2, 3, 4];
        
        let sum = 0;
        for (let index = 0; index < numbers.length; ++index) {
          const number = numbers[index];
          sum = getNewSum(sum, number);
        }
        
        console.log(sum);
        38,
        const getNewSum = (previousSum, currentElement) => {
          return previousSum + currentElement;
        }
        
        const numbers = [1, 2, 3, 4];
        
        let sum = 0;
        for (let index = 0; index < numbers.length; ++index) {
          const number = numbers[index];
          sum = getNewSum(sum, number);
        }
        
        console.log(sum);
        39, hoặc
        const numbers = [1, 2, 3, 4];
        
        const getNewSum = (previousSum, currentElement) => {
          return previousSum + currentElement;
        }
        
        const reduceSum = (arr, accumulatorCallback, initialValue) => {
          for (let index = 0; index < numbers.length; ++index) {
            const number = numbers[index];
            initialValue = accumulatorCallback(initialValue, number);
          }
        
          return initialValue;
        }
        
        let sum = 0;
        const finalSum = reduceSum(numbers, getNewSum, sum);
        console.log(finalSum);
        50
    • trở lại. giá trị mới của bộ tích lũy
  • const getNewSum = (previousSum, currentElement) => {
      return previousSum + currentElement;
    }
    
    const numbers = [1, 2, 3, 4];
    
    let sum = 0;
    for (let index = 0; index < numbers.length; ++index) {
      const number = numbers[index];
      sum = getNewSum(sum, number);
    }
    
    console.log(sum);
    32. những gì sẽ được tích lũy
    • có thể là Số, Chuỗi, Đối tượng, Mảng, v.v.
    • nếu không có giá trị nào được cung cấp thì phần tử đầu tiên của Mảng được sử dụng làm giá trị ban đầu và quá trình lặp lại bắt đầu ở phần tử tiếp theo (chỉ số 1)

const numbers = [1, 2, 3, 4];

const getNewSum = (previousSum, currentElement) => {
  return previousSum + currentElement;
}

const reduceSum = (arr, accumulatorCallback, initialValue) => {
  for (let index = 0; index < numbers.length; ++index) {
    const number = numbers[index];
    initialValue = accumulatorCallback(initialValue, number);
  }

  return initialValue;
}

let sum = 0;
const finalSum = reduceSum(numbers, getNewSum, sum);
console.log(finalSum);
5

Bây giờ bạn đã biết giảm đến từ đâu và cách nó hoạt động về mặt khái niệm, hãy xem một số trường hợp sử dụng thú vị hơn

lọc

const numbers = [1, 2, 3, 4];

const getNewSum = (previousSum, currentElement) => {
  return previousSum + currentElement;
}

const reduceSum = (arr, accumulatorCallback, initialValue) => {
  for (let index = 0; index < numbers.length; ++index) {
    const number = numbers[index];
    initialValue = accumulatorCallback(initialValue, number);
  }

  return initialValue;
}

let sum = 0;
const finalSum = reduceSum(numbers, getNewSum, sum);
console.log(finalSum);
8

Lưu ý trong trường hợp này, bộ tích lũy của chúng ta là một Mảng chứ không phải là một số. Để tích lũy Mảng của chúng tôi, chúng tôi đẩy các giá trị mới vào đó một cách có điều kiện. Sau khi đẩy số chẵn vào

const numbers = [1, 2, 3, 4];

const getNewSum = (previousSum, currentElement) => {
  return previousSum + currentElement;
}

const reduceSum = (arr, accumulatorCallback, initialValue) => {
  for (let index = 0; index < numbers.length; ++index) {
    const number = numbers[index];
    initialValue = accumulatorCallback(initialValue, number);
  }

  return initialValue;
}

let sum = 0;
const finalSum = reduceSum(numbers, getNewSum, sum);
console.log(finalSum);
52, chúng tôi trả về giá trị bộ tích lũy mới này. Trong trường hợp lẻ, chúng ta chỉ cần trả về giá trị
const numbers = [1, 2, 3, 4];

const getNewSum = (previousSum, currentElement) => {
  return previousSum + currentElement;
}

const reduceSum = (arr, accumulatorCallback, initialValue) => {
  for (let index = 0; index < numbers.length; ++index) {
    const number = numbers[index];
    initialValue = accumulatorCallback(initialValue, number);
  }

  return initialValue;
}

let sum = 0;
const finalSum = reduceSum(numbers, getNewSum, sum);
console.log(finalSum);
52 hiện tại vì số đó không phải là số chẵn (có nghĩa là nó không được cộng dồn)

Tuy nhiên, việc thay đổi các đối số hoặc bất kỳ thứ gì được xác định bên ngoài một hàm là một cách làm không tốt. Điều này có thể dẫn đến sự cố với các biến bên ngoài có giá trị không mong muốn khi chúng được sử dụng sau này trong mã (vì việc gán lại chúng bị ẩn trong một hàm)

Thay vào đó, tốt nhất là tạo các bản sao của các đối số và thao tác trên các đối số đó. Đây là một lý do khác khiến các phương thức Array rất hữu ích - bên cạnh

const numbers = [1, 2, 3, 4];

const getNewSum = (previousSum, currentElement) => {
  return previousSum + currentElement;
}

const reduceSum = (arr, accumulatorCallback, initialValue) => {
  for (let index = 0; index < numbers.length; ++index) {
    const number = numbers[index];
    initialValue = accumulatorCallback(initialValue, number);
  }

  return initialValue;
}

let sum = 0;
const finalSum = reduceSum(numbers, getNewSum, sum);
console.log(finalSum);
54 và
const numbers = [1, 2, 3, 4];

const getNewSum = (previousSum, currentElement) => {
  return previousSum + currentElement;
}

const reduceSum = (arr, accumulatorCallback, initialValue) => {
  for (let index = 0; index < numbers.length; ++index) {
    const number = numbers[index];
    initialValue = accumulatorCallback(initialValue, number);
  }

  return initialValue;
}

let sum = 0;
const finalSum = reduceSum(numbers, getNewSum, sum);
console.log(finalSum);
55, tất cả các phương thức đều trả về một Mảng được sao chép, không bao giờ ảnh hưởng đến bản gốc

Một cách dễ dàng để tránh thay đổi đối số bộ tích lũy là sử dụng cú pháp trải rộng của Arrays. Ở đây, chúng tôi trả về một Mảng mới mỗi lần chứa tất cả các phần tử đã tích lũy trước đó (thông qua trải rộng) và phần tử mới. Cú pháp trải rộng

const numbers = [1, 2, 3, 4];

const getNewSum = (previousSum, currentElement) => {
  return previousSum + currentElement;
}

const reduceSum = (arr, accumulatorCallback, initialValue) => {
  for (let index = 0; index < numbers.length; ++index) {
    const number = numbers[index];
    initialValue = accumulatorCallback(initialValue, number);
  }

  return initialValue;
}

let sum = 0;
const finalSum = reduceSum(numbers, getNewSum, sum);
console.log(finalSum);
56 trải rộng tất cả các phần tử trong Mảng vào Mảng mới xung quanh nó. Bằng cách trải rộng, chúng tôi không bao giờ thay đổi giá trị của Mảng ban đầu mà vẫn giữ nguyên mẫu tích lũy của mình

Đây chỉ là một trong nhiều cách sử dụng toán tử trải phổ. Chúng ta sẽ khám phá một số trong số chúng sau nhưng nếu bạn muốn tìm hiểu thêm bây giờ thì đây là một nơi tốt để bắt đầu

const getNewSum = (previousSum, currentElement) => {
  return previousSum + currentElement;
}

const numbers = [1, 2, 3, 4];

let sum = 0;
for (let index = 0; index < numbers.length; ++index) {
  const number = numbers[index];
  sum = getNewSum(sum, number);
}

console.log(sum);
4

Hãy xem xét việc rút gọn thành một Đối tượng. Ví dụ này dành cho bộ đếm tần số của các ký tự trong Chuỗi. Chúng tôi sẽ tạo một đối tượng có thuộc tính

const numbers = [1, 2, 3, 4];

const getNewSum = (previousSum, currentElement) => {
  return previousSum + currentElement;
}

const reduceSum = (arr, accumulatorCallback, initialValue) => {
  for (let index = 0; index < numbers.length; ++index) {
    const number = numbers[index];
    initialValue = accumulatorCallback(initialValue, number);
  }

  return initialValue;
}

let sum = 0;
const finalSum = reduceSum(numbers, getNewSum, sum);
console.log(finalSum);
57 để lưu trữ tần số ký tự của chúng tôi

const getNewSum = (previousSum, currentElement) => {
  return previousSum + currentElement;
}

const numbers = [1, 2, 3, 4];

let sum = 0;
for (let index = 0; index < numbers.length; ++index) {
  const number = numbers[index];
  sum = getNewSum(sum, number);
}

console.log(sum);
6

Chuỗi phương pháp

Đối với ví dụ cuối cùng, hãy xem cách

const getNewSum = (previousSum, currentElement) => {
  return previousSum + currentElement;
}

const numbers = [1, 2, 3, 4];

let sum = 0;
for (let index = 0; index < numbers.length; ++index) {
  const number = numbers[index];
  sum = getNewSum(sum, number);
}

console.log(sum);
9 có thể thay thế cả lệnh gọi
const numbers = [1, 2, 3, 4];

const getNewSum = (previousSum, currentElement) => {
  return previousSum + currentElement;
}

const reduceSum = (arr, accumulatorCallback, initialValue) => {
  for (let index = 0; index < numbers.length; ++index) {
    const number = numbers[index];
    initialValue = accumulatorCallback(initialValue, number);
  }

  return initialValue;
}

let sum = 0;
const finalSum = reduceSum(numbers, getNewSum, sum);
console.log(finalSum);
59 và
const numbers = [1, 2, 3, 4];

const getNewSum = (previousSum, currentElement) => {
  return previousSum + currentElement;
}

const reduceSum = (arr, accumulatorCallback, initialValue) => {
  for (let index = 0; index < numbers.length; ++index) {
    const number = numbers[index];
    initialValue = accumulatorCallback(initialValue, number);
  }

  return initialValue;
}

let sum = 0;
const finalSum = reduceSum(numbers, getNewSum, sum);
console.log(finalSum);
80. Mục tiêu của chúng ta ở đây là nhân mỗi số với 5 (
const numbers = [1, 2, 3, 4];

const getNewSum = (previousSum, currentElement) => {
  return previousSum + currentElement;
}

const reduceSum = (arr, accumulatorCallback, initialValue) => {
  for (let index = 0; index < numbers.length; ++index) {
    const number = numbers[index];
    initialValue = accumulatorCallback(initialValue, number);
  }

  return initialValue;
}

let sum = 0;
const finalSum = reduceSum(numbers, getNewSum, sum);
console.log(finalSum);
81) và chỉ
const numbers = [1, 2, 3, 4];

const getNewSum = (previousSum, currentElement) => {
  return previousSum + currentElement;
}

const reduceSum = (arr, accumulatorCallback, initialValue) => {
  for (let index = 0; index < numbers.length; ++index) {
    const number = numbers[index];
    initialValue = accumulatorCallback(initialValue, number);
  }

  return initialValue;
}

let sum = 0;
const finalSum = reduceSum(numbers, getNewSum, sum);
console.log(finalSum);
82 các kết quả chẵn

Trước tiên, hãy xem làm thế nào chúng ta có thể thực hiện điều này bằng cách sử dụng

const numbers = [1, 2, 3, 4];

const getNewSum = (previousSum, currentElement) => {
  return previousSum + currentElement;
}

const reduceSum = (arr, accumulatorCallback, initialValue) => {
  for (let index = 0; index < numbers.length; ++index) {
    const number = numbers[index];
    initialValue = accumulatorCallback(initialValue, number);
  }

  return initialValue;
}

let sum = 0;
const finalSum = reduceSum(numbers, getNewSum, sum);
console.log(finalSum);
59 và
const numbers = [1, 2, 3, 4];

const getNewSum = (previousSum, currentElement) => {
  return previousSum + currentElement;
}

const reduceSum = (arr, accumulatorCallback, initialValue) => {
  for (let index = 0; index < numbers.length; ++index) {
    const number = numbers[index];
    initialValue = accumulatorCallback(initialValue, number);
  }

  return initialValue;
}

let sum = 0;
const finalSum = reduceSum(numbers, getNewSum, sum);
console.log(finalSum);
80 liên kết với nhau. Chuỗi phương thức là một cách gọi một phương thức "trên" một phương thức khác bằng cách sử dụng toán tử dấu chấm. công việc này miễn là

  • những gì ở bên trái của
    const numbers = [1, 2, 3, 4];
    
    const getNewSum = (previousSum, currentElement) => {
      return previousSum + currentElement;
    }
    
    const reduceSum = (arr, accumulatorCallback, initialValue) => {
      for (let index = 0; index < numbers.length; ++index) {
        const number = numbers[index];
        initialValue = accumulatorCallback(initialValue, number);
      }
    
      return initialValue;
    }
    
    let sum = 0;
    const finalSum = reduceSum(numbers, getNewSum, sum);
    console.log(finalSum);
    85 là loại chính xác được mong đợi bởi
    • đây có thể là một giá trị cơ bản
    • đây có thể là một biểu thức được đánh giá để trả về một giá trị cơ sở
  • cuộc gọi phương thức ở bên phải của
    const numbers = [1, 2, 3, 4];
    
    const getNewSum = (previousSum, currentElement) => {
      return previousSum + currentElement;
    }
    
    const reduceSum = (arr, accumulatorCallback, initialValue) => {
      for (let index = 0; index < numbers.length; ++index) {
        const number = numbers[index];
        initialValue = accumulatorCallback(initialValue, number);
      }
    
      return initialValue;
    }
    
    let sum = 0;
    const finalSum = reduceSum(numbers, getNewSum, sum);
    console.log(finalSum);
    85

Ví dụ: giả sử chúng ta gọi

const numbers = [1, 2, 3, 4];

const getNewSum = (previousSum, currentElement) => {
  return previousSum + currentElement;
}

const reduceSum = (arr, accumulatorCallback, initialValue) => {
  for (let index = 0; index < numbers.length; ++index) {
    const number = numbers[index];
    initialValue = accumulatorCallback(initialValue, number);
  }

  return initialValue;
}

let sum = 0;
const finalSum = reduceSum(numbers, getNewSum, sum);
console.log(finalSum);
59 trên một mảng.
const numbers = [1, 2, 3, 4];

const getNewSum = (previousSum, currentElement) => {
  return previousSum + currentElement;
}

const reduceSum = (arr, accumulatorCallback, initialValue) => {
  for (let index = 0; index < numbers.length; ++index) {
    const number = numbers[index];
    initialValue = accumulatorCallback(initialValue, number);
  }

  return initialValue;
}

let sum = 0;
const finalSum = reduceSum(numbers, getNewSum, sum);
console.log(finalSum);
88

Ở bên trái của

const numbers = [1, 2, 3, 4];

const getNewSum = (previousSum, currentElement) => {
  return previousSum + currentElement;
}

const reduceSum = (arr, accumulatorCallback, initialValue) => {
  for (let index = 0; index < numbers.length; ++index) {
    const number = numbers[index];
    initialValue = accumulatorCallback(initialValue, number);
  }

  return initialValue;
}

let sum = 0;
const finalSum = reduceSum(numbers, getNewSum, sum);
console.log(finalSum);
85 là một kiểu Mảng
const getNewSum = (previousSum, currentElement) => {
  return previousSum + currentElement;
}

const numbers = [1, 2, 3, 4];

let sum = 0;
for (let index = 0; index < numbers.length; ++index) {
  const number = numbers[index];
  sum = getNewSum(sum, number);
}

console.log(sum);
6 và bên phải là một phương thức Mảng
const numbers = [1, 2, 3, 4];

const getNewSum = (previousSum, currentElement) => {
  return previousSum + currentElement;
}

const reduceSum = (arr, accumulatorCallback, initialValue) => {
  for (let index = 0; index < numbers.length; ++index) {
    const number = numbers[index];
    initialValue = accumulatorCallback(initialValue, number);
  }

  return initialValue;
}

let sum = 0;
const finalSum = reduceSum(numbers, getNewSum, sum);
console.log(finalSum);
59 mong đợi một Mảng hoạt động. Đây là cú pháp hợp lệ vì cả bên trái và bên phải của
const numbers = [1, 2, 3, 4];

const getNewSum = (previousSum, currentElement) => {
  return previousSum + currentElement;
}

const reduceSum = (arr, accumulatorCallback, initialValue) => {
  for (let index = 0; index < numbers.length; ++index) {
    const number = numbers[index];
    initialValue = accumulatorCallback(initialValue, number);
  }

  return initialValue;
}

let sum = 0;
const finalSum = reduceSum(numbers, getNewSum, sum);
console.log(finalSum);
85 đều thuộc loại chính xác

Điều gì sẽ xảy ra nếu chúng ta call, hoặc chain,

const numbers = [1, 2, 3, 4];

const getNewSum = (previousSum, currentElement) => {
  return previousSum + currentElement;
}

const reduceSum = (arr, accumulatorCallback, initialValue) => {
  for (let index = 0; index < numbers.length; ++index) {
    const number = numbers[index];
    initialValue = accumulatorCallback(initialValue, number);
  }

  return initialValue;
}

let sum = 0;
const finalSum = reduceSum(numbers, getNewSum, sum);
console.log(finalSum);
80 vào cuộc gọi
const numbers = [1, 2, 3, 4];

const getNewSum = (previousSum, currentElement) => {
  return previousSum + currentElement;
}

const reduceSum = (arr, accumulatorCallback, initialValue) => {
  for (let index = 0; index < numbers.length; ++index) {
    const number = numbers[index];
    initialValue = accumulatorCallback(initialValue, number);
  }

  return initialValue;
}

let sum = 0;
const finalSum = reduceSum(numbers, getNewSum, sum);
console.log(finalSum);
59?

Điều này có vẻ khó hiểu, nó sẽ giúp nhớ lại cách JavaScript đánh giá các biểu thức

Đầu tiên tuyên bố trong trường hợp này là gì?

const numbers = [1, 2, 3, 4];

const getNewSum = (previousSum, currentElement) => {
  return previousSum + currentElement;
}

const reduceSum = (arr, accumulatorCallback, initialValue) => {
  for (let index = 0; index < numbers.length; ++index) {
    const number = numbers[index];
    initialValue = accumulatorCallback(initialValue, number);
  }

  return initialValue;
}

let sum = 0;
const finalSum = reduceSum(numbers, getNewSum, sum);
console.log(finalSum);
8

Mọi thứ đang diễn ra ở phía bên phải của bài tập (______349) như cách diễn đạt của chúng ta. JavaScript sẽ đánh giá biểu thức từ trái sang phải cho đến khi kết thúc chuỗi và trả về giá trị đó

Một cách dễ dàng để hiểu điều này là chia nhỏ nó thành các bước. Lưu ý rằng sau mỗi bước được đánh giá, bất cứ thứ gì nó trả về sẽ được đưa cho bước tiếp theo. Nếu chúng ta chia nhỏ điều này thành các bước đánh giá thì nó trông như thế này

  • tuyên bố.
    const getNewSum = (previousSum, currentElement) => {
      return previousSum + currentElement;
    }
    
    const numbers = [1, 2, 3, 4];
    
    let sum = 0;
    for (let index = 0; index < numbers.length; ++index) {
      const number = numbers[index];
      sum = getNewSum(sum, number);
    }
    
    console.log(sum);
    60
  • biểu thức để đánh giá (chuỗi đánh giá).
    const getNewSum = (previousSum, currentElement) => {
      return previousSum + currentElement;
    }
    
    const numbers = [1, 2, 3, 4];
    
    let sum = 0;
    for (let index = 0; index < numbers.length; ++index) {
      const number = numbers[index];
      sum = getNewSum(sum, number);
    }
    
    console.log(sum);
    61
  • bước 1.
    const getNewSum = (previousSum, currentElement) => {
      return previousSum + currentElement;
    }
    
    const numbers = [1, 2, 3, 4];
    
    let sum = 0;
    for (let index = 0; index < numbers.length; ++index) {
      const number = numbers[index];
      sum = getNewSum(sum, number);
    }
    
    console.log(sum);
    6 đây là giá trị Mảng cơ sở, không có gì để đánh giá,
    const getNewSum = (previousSum, currentElement) => {
      return previousSum + currentElement;
    }
    
    const numbers = [1, 2, 3, 4];
    
    let sum = 0;
    for (let index = 0; index < numbers.length; ++index) {
      const number = numbers[index];
      sum = getNewSum(sum, number);
    }
    
    console.log(sum);
    63
  • bước 2.
    const getNewSum = (previousSum, currentElement) => {
      return previousSum + currentElement;
    }
    
    const numbers = [1, 2, 3, 4];
    
    let sum = 0;
    for (let index = 0; index < numbers.length; ++index) {
      const number = numbers[index];
      sum = getNewSum(sum, number);
    }
    
    console.log(sum);
    64 -> gọi
    const numbers = [1, 2, 3, 4];
    
    const getNewSum = (previousSum, currentElement) => {
      return previousSum + currentElement;
    }
    
    const reduceSum = (arr, accumulatorCallback, initialValue) => {
      for (let index = 0; index < numbers.length; ++index) {
        const number = numbers[index];
        initialValue = accumulatorCallback(initialValue, number);
      }
    
      return initialValue;
    }
    
    let sum = 0;
    const finalSum = reduceSum(numbers, getNewSum, sum);
    console.log(finalSum);
    59 trên Mảng bên trái -> đánh giá cuộc gọi phương thức
    const numbers = [1, 2, 3, 4];
    
    const getNewSum = (previousSum, currentElement) => {
      return previousSum + currentElement;
    }
    
    const reduceSum = (arr, accumulatorCallback, initialValue) => {
      for (let index = 0; index < numbers.length; ++index) {
        const number = numbers[index];
        initialValue = accumulatorCallback(initialValue, number);
      }
    
      return initialValue;
    }
    
    let sum = 0;
    const finalSum = reduceSum(numbers, getNewSum, sum);
    console.log(finalSum);
    59 -> trả về một Mảng ________ 16, ________ 368
  • bước 3.
    const getNewSum = (previousSum, currentElement) => {
      return previousSum + currentElement;
    }
    
    const numbers = [1, 2, 3, 4];
    
    let sum = 0;
    for (let index = 0; index < numbers.length; ++index) {
      const number = numbers[index];
      sum = getNewSum(sum, number);
    }
    
    console.log(sum);
    69 -> gọi
    const numbers = [1, 2, 3, 4];
    
    const getNewSum = (previousSum, currentElement) => {
      return previousSum + currentElement;
    }
    
    const reduceSum = (arr, accumulatorCallback, initialValue) => {
      for (let index = 0; index < numbers.length; ++index) {
        const number = numbers[index];
        initialValue = accumulatorCallback(initialValue, number);
      }
    
      return initialValue;
    }
    
    let sum = 0;
    const finalSum = reduceSum(numbers, getNewSum, sum);
    console.log(finalSum);
    80 trên Mảng được trả về ở bước trước -> đánh giá lệnh gọi phương thức
    const numbers = [1, 2, 3, 4];
    
    const getNewSum = (previousSum, currentElement) => {
      return previousSum + currentElement;
    }
    
    const reduceSum = (arr, accumulatorCallback, initialValue) => {
      for (let index = 0; index < numbers.length; ++index) {
        const number = numbers[index];
        initialValue = accumulatorCallback(initialValue, number);
      }
    
      return initialValue;
    }
    
    let sum = 0;
    const finalSum = reduceSum(numbers, getNewSum, sum);
    console.log(finalSum);
    80 -> trả về một Mảng ->
    const getNewSum = (previousSum, currentElement) => {
      return previousSum + currentElement;
    }
    
    const numbers = [1, 2, 3, 4];
    
    let sum = 0;
    for (let index = 0; index < numbers.length; ++index) {
      const number = numbers[index];
      sum = getNewSum(sum, number);
    }
    
    console.log(sum);
    6,
    const numbers = [1, 2, 3, 4];
    
    const getNewSum = (previousSum, currentElement) => {
      return previousSum + currentElement;
    }
    
    const reduceSum = (arr, accumulatorCallback, initialValue) => {
      for (let index = 0; index < numbers.length; ++index) {
        const number = numbers[index];
        initialValue = accumulatorCallback(initialValue, number);
      }
    
      return initialValue;
    }
    
    let sum = 0;
    const finalSum = reduceSum(numbers, getNewSum, sum);
    console.log(finalSum);
    83 vì đây là bước cuối cùng trong chuỗi đánh giá
  • bước 4. biểu thức đã được đánh giá thành một Mảng
    const numbers = [1, 2, 3, 4];
    
    const getNewSum = (previousSum, currentElement) => {
      return previousSum + currentElement;
    }
    
    const reduceSum = (arr, accumulatorCallback, initialValue) => {
      for (let index = 0; index < numbers.length; ++index) {
        const number = numbers[index];
        initialValue = accumulatorCallback(initialValue, number);
      }
    
      return initialValue;
    }
    
    let sum = 0;
    const finalSum = reduceSum(numbers, getNewSum, sum);
    console.log(finalSum);
    83 và được gán cho biến
    const numbers = [1, 2, 3, 4];
    
    const getNewSum = (previousSum, currentElement) => {
      return previousSum + currentElement;
    }
    
    const reduceSum = (arr, accumulatorCallback, initialValue) => {
      for (let index = 0; index < numbers.length; ++index) {
        const number = numbers[index];
        initialValue = accumulatorCallback(initialValue, number);
      }
    
      return initialValue;
    }
    
    let sum = 0;
    const finalSum = reduceSum(numbers, getNewSum, sum);
    console.log(finalSum);
    85

Vì vậy, trong mỗi bước đánh giá, các lệnh gọi phương thức được chuyển đổi thành kiểu trả về của chúng (một Mảng). Nếu chúng ta đi từ trái sang phải, chúng ta có thể thấy rằng mỗi bước trước đó trả về loại (Mảng) dự kiến ​​cần cho bước gọi phương thức tiếp theo

Dưới đây là một ví dụ về cách đảo ngược Chuỗi (một đoạn phỏng vấn cổ điển). Lưu ý rằng chúng tôi đang trộn cả hai phương thức Chuỗi và Mảng trong chuỗi. Điều này có vẻ không chính xác nhưng hãy nhớ rằng mỗi phương thức đang nhận chính xác loại mà nó mong đợi

Chúng ta sẽ xâu chuỗi 3 phương thức lại với nhau để. tách Chuỗi thành một mảng, đảo ngược các phần tử của Mảng đó và cuối cùng nối Mảng (đã đảo ngược) đó lại với nhau để tạo Chuỗi đảo ngược

const numbers = [1, 2, 3, 4];

const getNewSum = (previousSum, currentElement) => {
  return previousSum + currentElement;
}

const reduceSum = (arr, accumulatorCallback, initialValue) => {
  for (let index = 0; index < numbers.length; ++index) {
    const number = numbers[index];
    initialValue = accumulatorCallback(initialValue, number);
  }

  return initialValue;
}

let sum = 0;
const finalSum = reduceSum(numbers, getNewSum, sum);
console.log(finalSum);
6

Trải rộng trên nhiều dòng để dễ đọc

const getNewSum = (previousSum, currentElement) => {
  return previousSum + currentElement;
}

const numbers = [1, 2, 3, 4];

let sum = 0;
for (let index = 0; index < numbers.length; ++index) {
  const number = numbers[index];
  sum = getNewSum(sum, number);
}

console.log(sum);
0

Hãy chia nhỏ các bước đánh giá một lần nữa để xem tại sao điều này lại hiệu quả

  • sự diễn đạt.
    const numbers = [1, 2, 3, 4];
    
    const getNewSum = (previousSum, currentElement) => {
      return previousSum + currentElement;
    }
    
    const reduceSum = (arr, accumulatorCallback, initialValue) => {
      for (let index = 0; index < numbers.length; ++index) {
        const number = numbers[index];
        initialValue = accumulatorCallback(initialValue, number);
      }
    
      return initialValue;
    }
    
    let sum = 0;
    const finalSum = reduceSum(numbers, getNewSum, sum);
    console.log(finalSum);
    86
  • bước 1.
    const numbers = [1, 2, 3, 4];
    
    const getNewSum = (previousSum, currentElement) => {
      return previousSum + currentElement;
    }
    
    const reduceSum = (arr, accumulatorCallback, initialValue) => {
      for (let index = 0; index < numbers.length; ++index) {
        const number = numbers[index];
        initialValue = accumulatorCallback(initialValue, number);
      }
    
      return initialValue;
    }
    
    let sum = 0;
    const finalSum = reduceSum(numbers, getNewSum, sum);
    console.log(finalSum);
    87 đây là giá trị Chuỗi cơ sở, không có gì để đánh giá
  • bước 2.
    const numbers = [1, 2, 3, 4];
    
    const getNewSum = (previousSum, currentElement) => {
      return previousSum + currentElement;
    }
    
    const reduceSum = (arr, accumulatorCallback, initialValue) => {
      for (let index = 0; index < numbers.length; ++index) {
        const number = numbers[index];
        initialValue = accumulatorCallback(initialValue, number);
      }
    
      return initialValue;
    }
    
    let sum = 0;
    const finalSum = reduceSum(numbers, getNewSum, sum);
    console.log(finalSum);
    88 gọi giá trị Chuỗi -> đánh giá cuộc gọi phương thức -> trả về một Mảng ký tự Chuỗi
  • bước 3.
    const numbers = [1, 2, 3, 4];
    
    const getNewSum = (previousSum, currentElement) => {
      return previousSum + currentElement;
    }
    
    const reduceSum = (arr, accumulatorCallback, initialValue) => {
      for (let index = 0; index < numbers.length; ++index) {
        const number = numbers[index];
        initialValue = accumulatorCallback(initialValue, number);
      }
    
      return initialValue;
    }
    
    let sum = 0;
    const finalSum = reduceSum(numbers, getNewSum, sum);
    console.log(finalSum);
    89 được gọi trên Mảng được trả về bởi
    const numbers = [1, 2, 3, 4];
    
    const getNewSum = (previousSum, currentElement) => {
      return previousSum + currentElement;
    }
    
    const reduceSum = (arr, accumulatorCallback, initialValue) => {
      for (let index = 0; index < numbers.length; ++index) {
        const number = numbers[index];
        initialValue = accumulatorCallback(initialValue, number);
      }
    
      return initialValue;
    }
    
    let sum = 0;
    const finalSum = reduceSum(numbers, getNewSum, sum);
    console.log(finalSum);
    60 -> đánh giá lệnh gọi phương thức -> trả về một Mảng đảo ngược
  • bước 4.
    const numbers = [1, 2, 3, 4];
    
    const getNewSum = (previousSum, currentElement) => {
      return previousSum + currentElement;
    }
    
    const reduceSum = (arr, accumulatorCallback, initialValue) => {
      for (let index = 0; index < numbers.length; ++index) {
        const number = numbers[index];
        initialValue = accumulatorCallback(initialValue, number);
      }
    
      return initialValue;
    }
    
    let sum = 0;
    const finalSum = reduceSum(numbers, getNewSum, sum);
    console.log(finalSum);
    61 được gọi trên Mảng được trả về bởi
    const numbers = [1, 2, 3, 4];
    
    const getNewSum = (previousSum, currentElement) => {
      return previousSum + currentElement;
    }
    
    const reduceSum = (arr, accumulatorCallback, initialValue) => {
      for (let index = 0; index < numbers.length; ++index) {
        const number = numbers[index];
        initialValue = accumulatorCallback(initialValue, number);
      }
    
      return initialValue;
    }
    
    let sum = 0;
    const finalSum = reduceSum(numbers, getNewSum, sum);
    console.log(finalSum);
    89 -> đánh giá lệnh gọi phương thức -> trả về một Chuỗi được tạo thành từ các ký tự Chuỗi bị đảo ngược
  • bước 5. gán Chuỗi đảo ngược cho
    const numbers = [1, 2, 3, 4];
    
    const getNewSum = (previousSum, currentElement) => {
      return previousSum + currentElement;
    }
    
    const reduceSum = (arr, accumulatorCallback, initialValue) => {
      for (let index = 0; index < numbers.length; ++index) {
        const number = numbers[index];
        initialValue = accumulatorCallback(initialValue, number);
      }
    
      return initialValue;
    }
    
    let sum = 0;
    const finalSum = reduceSum(numbers, getNewSum, sum);
    console.log(finalSum);
    63

Bây giờ chúng ta đã hiểu về chuỗi, hãy xem cách nó có thể được sử dụng để đạt được mục tiêu của chúng ta

const getNewSum = (previousSum, currentElement) => {
  return previousSum + currentElement;
}

const numbers = [1, 2, 3, 4];

let sum = 0;
for (let index = 0; index < numbers.length; ++index) {
  const number = numbers[index];
  sum = getNewSum(sum, number);
}

console.log(sum);
1

Hãy chia phần này thành nhiều dòng để thêm một số ngữ cảnh. Đây là một cách phổ biến để viết các lời gọi phương thức chuỗi để mỗi lời gọi chiếm một dòng riêng và chúng ta có thể đọc nó theo thứ tự đánh giá. Lưu ý rằng JavaScript bỏ qua khoảng trắng giữa mỗi lệnh gọi

const getNewSum = (previousSum, currentElement) => {
  return previousSum + currentElement;
}

const numbers = [1, 2, 3, 4];

let sum = 0;
for (let index = 0; index < numbers.length; ++index) {
  const number = numbers[index];
  sum = getNewSum(sum, number);
}

console.log(sum);
2

const numbers = [1, 2, 3, 4];

const getNewSum = (previousSum, currentElement) => {
  return previousSum + currentElement;
}

const reduceSum = (arr, accumulatorCallback, initialValue) => {
  for (let index = 0; index < numbers.length; ++index) {
    const number = numbers[index];
    initialValue = accumulatorCallback(initialValue, number);
  }

  return initialValue;
}

let sum = 0;
const finalSum = reduceSum(numbers, getNewSum, sum);
console.log(finalSum);
64 là giá trị được trả về cuối cùng từ chuỗi nên nó trở thành giá trị được gán cho
const numbers = [1, 2, 3, 4];

const getNewSum = (previousSum, currentElement) => {
  return previousSum + currentElement;
}

const reduceSum = (arr, accumulatorCallback, initialValue) => {
  for (let index = 0; index < numbers.length; ++index) {
    const number = numbers[index];
    initialValue = accumulatorCallback(initialValue, number);
  }

  return initialValue;
}

let sum = 0;
const finalSum = reduceSum(numbers, getNewSum, sum);
console.log(finalSum);
85

Một số người thích sử dụng chuỗi để dễ đọc. Nó đọc khá rõ ràng, lấy một số số và ánh xạ (biến đổi) chúng theo tích của 5 rồi lọc kết quả. Tuy nhiên, hãy xem xét tác động của các mảng lớn. Hãy nhớ rằng mỗi phương thức Mảng lặp đi lặp lại trên toàn bộ Mảng. Vì vậy, nếu chúng ta có một Mảng có độ dài 10.000 phần tử. Điều đó có nghĩa là chúng tôi đã thực hiện 10.000 lần lặp cho lệnh gọi

const numbers = [1, 2, 3, 4];

const getNewSum = (previousSum, currentElement) => {
  return previousSum + currentElement;
}

const reduceSum = (arr, accumulatorCallback, initialValue) => {
  for (let index = 0; index < numbers.length; ++index) {
    const number = numbers[index];
    initialValue = accumulatorCallback(initialValue, number);
  }

  return initialValue;
}

let sum = 0;
const finalSum = reduceSum(numbers, getNewSum, sum);
console.log(finalSum);
59 và 10.000 lần lặp khác cho lệnh gọi
const numbers = [1, 2, 3, 4];

const getNewSum = (previousSum, currentElement) => {
  return previousSum + currentElement;
}

const reduceSum = (arr, accumulatorCallback, initialValue) => {
  for (let index = 0; index < numbers.length; ++index) {
    const number = numbers[index];
    initialValue = accumulatorCallback(initialValue, number);
  }

  return initialValue;
}

let sum = 0;
const finalSum = reduceSum(numbers, getNewSum, sum);
console.log(finalSum);
80. Đó là 20.000 lần lặp lại

Điều gì sẽ xảy ra nếu chúng ta có thể vừa chuyển đổi vừa lọc trong một lần lặp? . Nhập người bạn của chúng tôi

const getNewSum = (previousSum, currentElement) => {
  return previousSum + currentElement;
}

const numbers = [1, 2, 3, 4];

let sum = 0;
for (let index = 0; index < numbers.length; ++index) {
  const number = numbers[index];
  sum = getNewSum(sum, number);
}

console.log(sum);
9, giống như các phương thức Array lặp khác, lặp lại Mảng đã cho. Sử dụng
const getNewSum = (previousSum, currentElement) => {
  return previousSum + currentElement;
}

const numbers = [1, 2, 3, 4];

let sum = 0;
for (let index = 0; index < numbers.length; ++index) {
  const number = numbers[index];
  sum = getNewSum(sum, number);
}

console.log(sum);
9, chúng tôi có thể đạt được kết quả tương tự nhưng chỉ sử dụng một lần lặp trên Aray

const getNewSum = (previousSum, currentElement) => {
  return previousSum + currentElement;
}

const numbers = [1, 2, 3, 4];

let sum = 0;
for (let index = 0; index < numbers.length; ++index) {
  const number = numbers[index];
  sum = getNewSum(sum, number);
}

console.log(sum);
3

Hãy sáng tạo và thử giảm một số Mảng thành các loại bộ tích lũy khác nhau. Hãy nhớ rằng tất cả những gì bộ giảm tốc quan tâm là một cuộc gọi lại trả về một giá trị bộ tích lũy mới và một đối tượng bộ tích lũy ban đầu. Việc bạn định nghĩa thế nào là tích lũy và cách bạn sẽ lưu trữ nó như một công cụ tích lũy hoàn toàn phụ thuộc vào bạn

Một ví dụ về mô hình tích lũy là gì?

Số lần lặp lại là nơi số thứ hai phát huy tác dụng. Ví dụ: nếu chúng ta muốn nhân ba với năm, chúng ta có thể coi đó là phép cộng ba với chính nó năm lần . Ba cộng ba là sáu, cộng ba là chín, cộng ba là 12, cuối cùng cộng ba là 15.

Lập trình tích lũy là gì?

Bộ tích lũy chủ yếu được sử dụng làm thanh ghi trong CPU để lưu trữ dữ liệu logic hoặc số học trung gian trong phép tính nhiều bước . Đối với các tính toán như vậy, nó hoạt động như một vị trí lưu trữ tạm thời.

Bộ tích lũy trong vòng lặp là gì?

Tuy nhiên, với lập trình, chúng ta phải lưu trữ rõ ràng một giá trị như vậy trong một biến. mẫu khởi tạo một biến thành một giá trị trống hoặc cơ bản nào đó và cập nhật nó trong một vòng lặp thường được gọi là mẫu bộ tích lũy. Chúng tôi gọi biến là bộ tích lũy.

Bộ tích lũy là gì Khởi tạo và cập nhật bộ tích lũy trong một chương trình có nghĩa là gì?

Mẫu tích lũy là một chiến lược gồm 1) khởi tạo một biến 2) lặp lại trên một tập hợp dữ liệu, một phạm vi hoặc cho đến khi một điều kiện được thỏa mãn và 3) cập nhật . Biến được xác định bên ngoài phép lặp được gọi là bộ tích lũy. . The variable that is defined outside of the iteration is referred to as the accumulator.