hocvietcode.com
  • Trang chủ
  • Học lập trình
    • Lập trình C/C++
    • Cấu trúc dữ liệu và giải thuật
    • Lập trình HTML
    • Lập trình Javascript
      • Javascript cơ bản
      • ReactJS framework
      • AngularJS framework
      • Typescript cơ bản
      • Angular
      • NodeJS
    • Lập trình Mobile
      • Lập Trình Dart Cơ Bản
        • Dart Flutter Framework
    • Cơ sở dữ liệu
      • MySQL – MariaDB
      • Micrsoft SQL Server
      • Extensible Markup Language (XML)
      • JSON
      • MongoDB
    • Lập trình PHP
      • Lập trình PHP cơ bản
      • Laravel Framework
    • Lập trình Java
      • Java Cơ bản
      • Spring Boot
    • Lập trình C#
      • Lập Trình C# Cơ Bản
      • ASP.NET Core MVC
    • Machine Learning
    • Git và Github
  • WORDPRESS
    • WordPress cơ bản
    • WordPress nâng cao
    • Chia sẻ WordPress
  • Kiến thức hệ thống
    • Microsoft Azure
    • Docker
    • Linux
  • Chia sẻ IT
    • Tin học văn phòng
      • Microsoft Word
      • Microsoft Excel
    • Marketing
      • Google Adwords
      • Facebook Ads
      • Kiến thức khác
    • Chia sẻ phần mềm
    • Review công nghệ
    • Công cụ – tiện ích
      • Kiểm tra bàn phím online
      • Kiểm tra webcam online
  • Lập trình Python
Đăng nhập
  • Đăng nhập / Đăng ký

Please enter key search to display results.

Home
  • Javascript cơ bản
JavaScript cơ bản – Bài 11: Xử lý mảng với map, filter, find và reduce

JavaScript cơ bản – Bài 11: Xử lý mảng với map, filter, find và reduce

  • 17-10-2026
  • Toanngo92
  • 0 Comments

Loạt bài JavaScript cơ bản · Bài 11/18 — Mục lục học tập

Sau khi biết duyệt mảng, bạn có thể dùng các phương thức diễn đạt trực tiếp việc cần làm: đổi từng phần tử, giữ phần tử thỏa điều kiện, tìm một phần tử hoặc gom thành kết quả. Các ví dụ sau dùng mảng số để bạn dễ kiểm tra.

Mục lục

  • map: biến đổi mỗi phần tử
  • filter: giữ các phần tử phù hợp
  • find, some và every
  • reduce: gom thành một giá trị
  • Sắp xếp số đúng cách
  • Bài tập

map: biến đổi mỗi phần tử

const prices = [100, 200, 300];
const discounted = prices.map((price) => price * 0.9);
console.log(discounted); // [90, 180, 270]
console.log(prices); // [100, 200, 300]

Callback là hàm được truyền vào phương thức. map gọi callback với từng phần tử và tạo một mảng mới có cùng số phần tử. Luôn trả lại giá trị cần đưa vào mảng kết quả. Nếu callback có ngoặc nhọn mà quên return, các phần tử mới sẽ là undefined.

filter: giữ các phần tử phù hợp

const scores = [4, 8, 5, 9];
const passedScores = scores.filter((score) => score >= 5);
console.log(passedScores); // [8, 5, 9]

filter tạo mảng mới chứa các phần tử có callback trả về giá trị truthy. Không có phần tử phù hợp thì kết quả là mảng rỗng, không phải null.

find, some và every

const scores = [4, 8, 5, 9];
console.log(scores.find((score) => score >= 8)); // 8
console.log(scores.find((score) => score > 10)); // undefined
console.log(scores.some((score) => score < 5)); // true
console.log(scores.every((score) => score >= 5)); // false

find trả phần tử đầu tiên phù hợp; nó không trả danh sách. some trả boolean cho câu hỏi có ít nhất một phần tử phù hợp không; every kiểm tra tất cả. Với mảng rỗng, some trả false và every trả true; hãy cân nhắc ý nghĩa nghiệp vụ trước khi dùng every để kết luận đã có dữ liệu.

reduce: gom thành một giá trị

const prices = [100, 200, 300];
const total = prices.reduce((sum, price) => sum + price, 0);
console.log(total); // 600

sum là giá trị tích lũy. Số 0 sau callback là giá trị khởi tạo, giúp phép cộng hoạt động cả với mảng rỗng. Nếu chưa quen reduce, một vòng for…of rõ ràng vẫn là lựa chọn tốt; không cần dùng phương thức ngắn nhất bằng mọi giá.

Sắp xếp số đúng cách

const numbers = [2, 10, 1];
const sorted = [...numbers].sort((a, b) => a - b);
console.log(sorted); // [1, 2, 10]
console.log(numbers); // [2, 10, 1]

sort mặc định so theo biểu diễn chuỗi nên không phù hợp để sắp xếp số như mong đợi. sort cũng sửa mảng đang gọi; ví dụ sao chép trước bằng spread rồi mới sắp xếp.

Bài tập

Cho điểm [3, 7, 8, 4, 10]. Lấy các điểm đạt, tăng mỗi điểm đạt thêm 1 nhưng tối đa 10, rồi tính tổng. Kết quả danh sách [8, 9, 10], tổng 27.

const scores = [3, 7, 8, 4, 10];
const improved = scores
  .filter((score) => score >= 5)
  .map((score) => Math.min(score + 1, 10));
const total = improved.reduce((sum, score) => sum + score, 0);
console.log(improved, total);

Ghi nhớ: map để đổi, filter để lọc, find để tìm một phần tử và reduce để gom kết quả. Ưu tiên tên callback dễ hiểu.


← Bài trước: Mảng, chỉ số và cách duyệt danh sách · Bài tiếp: Đối tượng, thuộc tính và danh sách đối tượng →

Xem chuyên mục JavaScript cơ bản

Bài viết liên quan:

JavaScript cơ bản – Bài 18: Dự án thực hành: ứng dụng quản lý công việc học tập
JavaScript cơ bản – Bài 16: Biểu mẫu, preventDefault và kiểm tra dữ liệu nhập
JavaScript cơ bản – Bài 17: Lưu dữ liệu với localStorage, JSON và try…catch
JavaScript cơ bản – Bài 15: Sự kiện và addEventListener: làm bộ đếm tương tác
JavaScript cơ bản – Bài 13: Xử lý chuỗi và template literal
JavaScript cơ bản – Bài 14: DOM: chọn phần tử, đổi nội dung và tạo danh sách
JavaScript cơ bản – Bài 12: Đối tượng, thuộc tính và danh sách đối tượng
JavaScript cơ bản – Bài 10: Mảng, chỉ số và cách duyệt danh sách
JavaScript cơ bản – Bài 08: Hàm, tham số, return và arrow function
JavaScript cơ bản – Bài 09: Phạm vi biến và cách tránh lỗi ReferenceError
JavaScript cơ bản – Bài 07: Vòng lặp for, while, break và continue
JavaScript cơ bản – Bài 06: Rẽ nhánh với if, else và switch

THÊM BÌNH LUẬN Cancel reply

Dịch vụ thiết kế Wesbite

NỘI DUNG MỚI CẬP NHẬT

Giáo trình Python: mục lục 12 chương, 24 bài từ cơ bản đến ứng dụng

Python bài 24: Lock, Queue và thiết kế worker an toàn

Python bài 23: Thread, start, join và concurrency

Python bài 22: Kết nối MySQL và CRUD có transaction

Python bài 21: Gọi HTTP API, xử lý JSON và tải dữ liệu

Giới thiệu

hocvietcode.com là website chia sẻ và cập nhật tin tức công nghệ, chia sẻ kiến thức, kỹ năng. Chúng tôi rất cảm ơn và mong muốn nhận được nhiều phản hồi để có thể phục vụ quý bạn đọc tốt hơn !

Liên hệ quảng cáo: [email protected]

Kết nối với HỌC VIẾT CODE

© hocvietcode.com - Tech888 Co .Ltd since 2019

Đăng nhập

Trở thành một phần của cộng đồng của chúng tôi!
Registration complete. Please check your email.
Đăng nhập bằng google
Đăng kýBạn quên mật khẩu?

Create an account

Welcome! Register for an account
The user name or email address is not correct.
Registration confirmation will be emailed to you.
Log in Lost your password?

Reset password

Recover your password
Password reset email has been sent.
The email could not be sent. Possible reason: your host may have disabled the mail function.
A password will be e-mailed to you.
Log in Register
×