Tổng phụ mảng JavaScript

Có nhiều cách bạn nên sử dụng để tính tổng của một dãy số. Hãy thảo luận về từng người trong số họ và thử các ví dụ

Bạn có thể sử dụng phương pháp để tìm tổng của một dãy số

Phương thức reduce() thực thi hàm rút gọn được chỉ định trên từng thành viên của mảng dẫn đến một giá trị đầu ra duy nhất như trong ví dụ sau

Tổng phụ mảng JavaScript
Phương thức rút gọn Javascript để tìm tổng của một mảng

để mảng = [10, 20, 30, 40]; . giảm (hàm (a, b) { trả về a + b; }, 0); . nhật ký (tổng); . 100

0 trong là giá trị mặc định. Nếu giá trị mặc định không được cung cấp, phần tử đầu tiên trong mảng sẽ được sử dụng. Nếu mảng trống, bạn sẽ gặp lỗi

Nếu bạn sử dụng ES2015, bạn có thể làm cho nó dài dòng hơn như thế này

Tổng phụ mảng JavaScript
Phương thức rút gọn Javascript để tìm tổng của một mảng

const tổng = [10, 20, 30]. bàn điều khiển giảm ((a, b) => a + b). nhật ký (tổng); . 60

Một phương pháp nhanh khác là sử dụng vòng lặp thậm chí còn nhanh hơn như phương thức reduce()

Tổng phụ mảng JavaScript
Javascript cho vòng lặp để tìm tổng của một mảng

để số = [10, 20, 30, 40, 50] để tổng = 0; . chiều dài; . nhật ký (tổng) // Đầu ra. 150

Một cách khác để tính mảng số là sử dụng vòng lặp như thế này

Tổng phụ mảng JavaScript
Vòng lặp Javascript forEach tính toán mảng số

mảng const = [10, 20, 30, 40]; . bảng điều khiển forEach(số => { kết quả += số; }). nhật ký (kết quả); . 100

Phương thức gọi một hàm rút gọn được cung cấp trên từng phần tử của mảng và dẫn đến một giá trị đầu ra duy nhất. Nó thực hiện gọi lại một lần cho mỗi giá trị được gán có trong mảng lấy bốn đối số. bộ tích lũy, giá trị hiện tại, chỉ số hiện tại, mảng. Nên cung cấp giá trị mặc định chẳng hạn như 0 để thực hiện phép cộng và 1 để thực hiện phép nhân

Mảng đối tượng JavaScript tổng phụ theo thay đổi trong một khóa đã chỉ định. Ban đầu được tạo cho một bảng HTML tổng phụ AngularJS

Ví dụ sử dụng

Đoạn mã sau

const subtotal = require('../src/subtotal');

const masterData = [
    {
        name: 'Jake',
        value_0: 1,
        value_1: 2
    }, {
        name: 'John',
        value_0: 4,
        value_1: 2
    }, {
        name: 'John',
        value_0: 4,
        value_1: 1
    }, {
        name: 'Sally',
        value_0: 8,
        value_1: 2
    }
];

let output = subtotal(masterData, 'name', ['value_0', 'value_1']);

sẽ tạo đối tượng JavaScript sau

{
  "John":{
    data: [{name: "John", value_0: 4, value_1: 2}, {name: "John", value_0: 4, value_1: 1}],
    totals:{
      value_0: 8,
      value_1: 3
    }
  },
  ...
}

Tôi đang cố cộng ba tổng. totalPoints, monthlyTotalsmonthlyByType sử dụng Array.prototype.reduce

Tôi có totalPointsmonthlyTotals hoạt động tốt nhưng tôi bị mắc kẹt ở cái cuối cùng, monthlyByType

Đây là mảng mà tôi cần lặp lại

const gamePointsArray = [
  {
    gamePlayId: 'ggg1',
    gameType: 1,
    gameMonth: 4,
    gamePoints: 4000,
  },
  {
    gamePlayId: 'ggg2',
    gameType: 2,
    gameMonth: 2,
    gamePoints: 7000,
  },
  {
    gamePlayId: 'ggg3',
    gameType: 2,
    gameMonth: 0,
    gamePoints: 3000,
  },
  {
    gamePlayId: 'ggg4',
    gameType: 1,
    gameMonth: 8,
    gamePoints: 25000,
  },
  {
    gamePlayId: 'ggg5',
    gameType: 3,
    gameMonth: 8,
    gamePoints: 5000,
  },
  {
    gamePlayId: 'ggg6',
    gameType: 3,
    gameMonth: 3,
    gamePoints: 10000,
  },
  {
    gamePlayId: 'ggg7',
    gameType: 2,
    gameMonth: 3,
    gamePoints: 5000,
  },

]

Đây là bộ giảm tốc của tôi

const gamePointsReducer = (acc, game) => {

  const { gamePlayId, gameType, gameMonth, gamePoints,} = game

  if (!acc['totalPoints']) {
    acc['totalPoints'] = gamePoints
  } else {
    acc['totalPoints'] += gamePoints
  }

  if (!acc['monthlyTotals']) {
    acc['monthlyTotals'] = {
      0: 0,
      1: 0,
      2: 0,
      3: 0,
      4: 0,
      5: 0,
      6: 0,
      7: 0,
      8: 0,
      9: 0,
      10: 0,
      11: 0,
    }
  }

  acc.monthlyTotals[`${gameMonth}`] += gamePoints 

  if (!acc['monthByType']) {
    acc['monthByType'] = {
      0: {},
      1: {},
      2: {},
      3: {},
      4: {},
      5: {},
      6: {},
      7: {},
      8: {},
      9: {},
      10: {},
      11: {},
    }
  }

  acc.monthByType[`${gameMonth}`] += {
    [`${gameType}`]: gamePoints
  }

  return acc


}



const monthTotalsObj = gamePointsArray.reduce(gamePointsReducer, {}) 
console.log('Game Points totals obj', monthTotalsObj); 

Tôi cần kết quả cuối cùng

const gamePointsReducer = (acc, game) => {

  const { gamePlayId, gameType, gameMonth, gamePoints,} = game

  if (!acc['totalPoints']) {
    acc['totalPoints'] = gamePoints
  } else {
    acc['totalPoints'] += gamePoints
  }

  if (!acc['monthlyTotals']) {
    acc['monthlyTotals'] = {
      0: 0,
      1: 0,
      2: 0,
      3: 0,
      4: 0,
      5: 0,
      6: 0,
      7: 0,
      8: 0,
      9: 0,
      10: 0,
      11: 0,
    }
  }

  acc.monthlyTotals[`${gameMonth}`] += gamePoints 

  if (!acc['monthByType']) {
    acc['monthByType'] = {
      0: {},
      1: {},
      2: {},
      3: {},
      4: {},
      5: {},
      6: {},
      7: {},
      8: {},
      9: {},
      10: {},
      11: {},
    }
  }

  acc.monthByType[`${gameMonth}`] += {
    [`${gameType}`]: gamePoints
  }

  return acc


}



const monthTotalsObj = gamePointsArray.reduce(gamePointsReducer, {}) 
console.log('Game Points totals obj', monthTotalsObj); 
0 trông như thế này

{
  totalPoints: 59000,
  monthlyTotals: {
    0: 3000,
    1: 0,
    2: 7000,
    3: 15000,
    4: 4000,
    5: 0,
    6: 0,
    7: 0,
    8: 30000,
    9: 0,
    10: 0,
    11: 0,
  },
  monthByType: {
    0: {
      2: 3000,
    },
    1: {},
    2: {
      2: 7000,
    },
    3: {},
    4: {
      1: 4000,
    },
    5: {},
    6: {},
    7: {},
    8: {
      1: 25000,
      3: 5000,
    },
    9: {},
    10: {},
    11: {},
  }
}

Có một hàm SUM() trong Javascript không?

hàm sum() trong D3. js dùng để trả về tổng các phần tử của mảng đã cho . Nếu mảng trống thì nó trả về 0. Thông số. Hàm này chấp nhận một tham số Mảng là một mảng các phần tử cần tính tổng.

Làm cách nào để tính tổng cộng trong JavaScript?

Giải pháp 1 .
Trước hết, hãy thử lấy Mảng các mục bằng " Tài liệu. getElementsByClassName()".
Sau khi thêm hàng một cách linh hoạt, hãy thử xem nguồn trang và kiểm tra xem thẻ đó có chứa tên lớp cụ thể mà bạn đang cố lấy không
Trước khi lặp mảng