Menu
CoddyTech

Điều kiện với 'every'

Thuộc phần Logic và luồng điều khiển trong hành trình Dart của Coddy. Bài học 14 trên 65.

Trong khi any() kiểm tra xem có ít nhất một phần tử thỏa mãn điều kiện hay không, đôi khi bạn cần xác minh rằng mọi phần tử trong danh sách đều đáp ứng một yêu cầu cụ thể. Phương thức every() cung cấp chức năng này bằng cách kiểm tra từng phần tử với điều kiện của bạn và chỉ trả về true nếu tất cả đều đạt.

Phương thức every() nhận một hàm kiểm tra, hàm này trả về true hoặc false cho từng phần tử. Nếu có bất kỳ phần tử nào không vượt qua bài kiểm tra, every() lập tức trả về false. Chỉ khi mọi phần tử đều vượt qua bài kiểm tra thì phương thức mới trả về true.

List<int> examScores = [75, 82, 68, 91, 77];

// Kiểm tra xem tất cả học sinh có đạt (score > 60) không
bool allPassed = examScores.every((score) => score > 60);
print(allPassed);  // true

Phương thức này đặc biệt hữu ích trong các tình huống xác thực, khi bạn cần đảm bảo mọi phần tử đều đáp ứng các tiêu chí nhất định trước khi tiếp tục. Phương thức every() ngừng kiểm tra ngay khi tìm thấy một phần tử không đạt yêu cầu, nhờ đó hoạt động hiệu quả với các danh sách lớn khi bạn cần tất cả phần tử đều tuân thủ.

challenge icon

Thử thách

Dễ

Tạo một chương trình quản lý hệ thống kiểm soát chất lượng bằng cách xác minh rằng tất cả sản phẩm trong một lô đều đáp ứng các tiêu chuẩn yêu cầu. Chương trình của bạn cần:

  1. Đọc một chuỗi đầu vào đại diện cho tên nhà máy
  2. Đọc nhiều giá trị đầu vào kiểu số nguyên đại diện cho điểm chất lượng sản phẩm (đầu vào sẽ kết thúc khi bạn nhận được -1)
  3. Đọc một giá trị đầu vào kiểu số nguyên đại diện cho ngưỡng tiêu chuẩn chất lượng tối thiểu
  4. Dùng phương thức every() để kiểm tra xem tất cả điểm chất lượng sản phẩm có lớn hơn hoặc bằng ngưỡng tối thiểu hay không
  5. In kết quả kiểm soát chất lượng theo đúng định dạng bên dưới

Ví dụ, nếu tên nhà máy là "Electronics Factory", các điểm chất lượng là 85, 92, 78, 88, 95, và ngưỡng tối thiểu là 75, chương trình của bạn cần in ra:

Factory: Electronics Factory
Quality scores: [85, 92, 78, 88, 95]
Minimum standard: 75
Checking if all scores >= 75
All products passed: true
Status: Batch approved for shipment

Nếu tên nhà máy là "Textile Mill", các điểm chất lượng là 68, 82, 74, 91, và ngưỡng tối thiểu là 70, chương trình của bạn cần in ra:

Factory: Textile Mill
Quality scores: [68, 82, 74, 91]
Minimum standard: 70
Checking if all scores >= 70
All products passed: false
Status: Batch rejected - quality improvement required

Nếu tên nhà máy là "Food Processing", các điểm chất lượng là 95, 98, 92, và ngưỡng tối thiểu là 90, chương trình của bạn cần in ra:

Factory: Food Processing
Quality scores: [95, 98, 92]
Minimum standard: 90
Checking if all scores >= 90
All products passed: true
Status: Batch approved for shipment

Chương trình của bạn phải dùng phương thức every() để xác minh rằng tất cả điểm chất lượng đều lớn hơn hoặc bằng ngưỡng tối thiểu. Hiển thị "Batch approved for shipment" nếu tất cả sản phẩm đáp ứng tiêu chuẩn, hoặc "Batch rejected - quality improvement required" nếu có sản phẩm không đạt yêu cầu tối thiểu.

Tự làm thử

import 'dart:io';

void main() {
  // Đọc tên nhà máy
  String? factoryName = stdin.readLineSync();
  
  // Đọc các điểm chất lượng cho đến khi gặp -1
  List<int> qualityScores = [];
  while (true) {
    int score = int.parse(stdin.readLineSync()!);
    if (score == -1) {
      break;
    }
    qualityScores.add(score);
  }
  
  // Đọc ngưỡng tối thiểu
  int minThreshold = int.parse(stdin.readLineSync()!);
  
  // TODO: Viết code của bạn bên dưới
  // Dùng phương thức (method) every() để kiểm tra xem tất cả điểm số có đạt tiêu chuẩn tối thiểu không
  
  // In ra kết quả theo định dạng yêu cầu
  print('Factory: $factoryName');
  print('Quality scores: $qualityScores');
  print('Minimum standard: $minThreshold');
  print('Checking if all scores >= $minThreshold');
  // In ra thông tin tất cả sản phẩm có đạt hay không và trạng thái cuối cùng
}
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Logic và luồng điều khiển

Tự luyện tập: Trình biên dịch Dart online