Javascript Mảng giảm ()

Phương thức Reduce () trong mảng JavaScript thực thi một hàm giảm thiểu trên mỗi phần tử của mảng và trả về một giá trị đầu ra duy nhất.

Cú pháp của reduce()phương thức là:

 arr.reduce(callback(accumulator, currentValue), initialValue)

Ở đây, arr là một mảng.

giảm () Tham số

Các reduce()phương pháp có trong:

  • callback - Hàm thực thi trên mỗi phần tử mảng (ngoại trừ phần tử đầu tiên nếu không cung cấp giá trị ban đầu). Nó mất trong
    • bộ tích lũy - Nó tích lũy các giá trị trả về của lệnh gọi lại.
    • currentValue - Phần tử hiện tại đang được truyền từ mảng.
  • InitialValue (tùy chọn) - Một giá trị sẽ được chuyển cho callback()lần gọi đầu tiên. Nếu không được cung cấp, phần tử đầu tiên hoạt động như bộ tích lũy trong lần gọi đầu tiên và callback()sẽ không thực thi trên đó.

Lưu ý: Việc gọi reduce()trên một mảng trống không có giá trị khởi tạo sẽ được ném ra TypeError.

Giá trị trả về từ Reduce ()

  • Trả về một giá trị duy nhất có được sau khi giảm mảng.

Ghi chú :

  • reduce() thực hiện chức năng đã cho cho mỗi giá trị từ trái sang phải.
  • reduce() không thay đổi mảng ban đầu.
  • Nó hầu như luôn luôn an toàn hơn để cung cấp initialValue.

Ví dụ 1: Tổng tất cả các giá trị của mảng

 const numbers = (1, 2, 3, 4, 5, 6); function sum_reducer(accumulator, currentValue) ( return accumulator + currentValue; ) let sum = numbers.reduce(sum_reducer); console.log(sum); // 21 // using arrow function let summation = numbers.reduce( (accumulator, currentValue) => accumulator + currentValue ); console.log(summation); // 21

Đầu ra

 21 21

Ví dụ 2: Trừ các số trong mảng

 const numbers = (1800, 50, 300, 20, 100); // subtract all numbers from first number // since 1st element is called as accumulator rather than currentValue // 1800 - 50 - 300 - 20 - 100 let difference = numbers.reduce( (accumulator, currentValue) => accumulator - currentValue ); console.log(difference); // 1330 const expenses = (1800, 2000, 3000, 5000, 500); const salary = 15000; // function that subtracts all array elements from given number // 15000 - 1800 - 2000 - 3000 - 5000 - 500 let remaining = expenses.reduce( (accumulator, currentValue) => accumulator - currentValue, salary ); console.log(remaining); // 2700

Đầu ra

 1330 2700

Ví dụ này giải thích rõ ràng sự khác biệt giữa việc chuyển giá trị ban đầu và không truyền giá trị ban đầu.

Ví dụ 3: Xóa các mục trùng lặp khỏi mảng

 let ageGroup = (18, 21, 1, 1, 51, 18, 21, 5, 18, 7, 10); let uniqueAgeGroup = ageGroup.reduce(function (accumulator, currentValue) ( if (accumulator.indexOf(currentValue) === -1) ( accumulator.push(currentValue); ) return accumulator; ), ()); console.log(uniqueAgeGroup); // ( 18, 21, 1, 51, 5, 7, 10 )

Đầu ra

 (18, 21, 1, 51, 5, 7, 10)

Ví dụ 4: Nhóm các đối tượng theo một thuộc tính

 let people = ( ( name: "John", age: 21 ), ( name: "Oliver", age: 55 ), ( name: "Michael", age: 55 ), ( name: "Dwight", age: 19 ), ( name: "Oscar", age: 21 ), ( name: "Kevin", age: 55 ), ); function groupBy(objectArray, property) ( return objectArray.reduce(function (accumulator, currentObject) ( let key = currentObject(property); if (!accumulator(key)) ( accumulator(key) = (); ) accumulator(key).push(currentObject); return accumulator; ), ()); ) let groupedPeople = groupBy(people, "age"); console.log(groupedPeople);

Đầu ra

 ('19': ((tên: 'Dwight', tuổi: 19)), '21': ((tên: 'John', tuổi: 21), (tên: 'Oscar', tuổi: 21)), ' 55 ': ((tên:' Oliver ', tuổi: 55), (tên:' Michael ', tuổi: 55), (tên:' Kevin ', tuổi: 55)))

Đề xuất Đọc: JavaScript Array ReduceRight ()

thú vị bài viết...