Đ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); // truePhươ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ủ.
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:
- Đọc một chuỗi đầu vào đại diện cho tên nhà máy
- Đọ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) - Đọ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
- 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 - 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 shipmentNế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 requiredNế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 shipmentChươ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
}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
1Thao tác nâng cao với danh sách
Thuộc tính danh sách: đầu và cuốiTrạng thái danh sách: isEmpty và isNotEmpĐảo ngược danh sáchThêm vào danh sách: insertXóa khỏi danh sách: removeWhereTìm trong danh sách: indexOfSắp xếp danh sáchXáo trộn danh sáchÔn tập: trình sắp xếp danh sách4Thao tác nâng cao với Map
Duyệt qua MapKiểm tra khóa và giá trịCác thuộc tính của Map: khóa và giá trịThêm có điều kiện: putIfAbsentXóa mục khỏi MapMap lồng nhauÔn tập: Cập nhật kho hàng2Thao tác hàm trên danh sách
Biến đổi bằng 'map'Lọc bằng 'where'Dùng '.toList()'Kiểm tra điều kiện bằng 'any'Điều kiện với 'every'Tìm phần tử bằng 'firstWhere'Ôn tập: lọc dữ liệu5Dự án: Tính tiền giỏ hàng
Thiết lập dự ánThêm mặt hàng vào giỏ8Dự án: Trình phân tích văn bản đơn giản
Tổng quan và thiết lập dự ánĐếm ký tự3Tập hợp
Tập hợp là gì?Tạo tập hợpThêm và xóa phần tử khỏi tập hợpKiểm tra phần tử trong tập hợpChuyển danh sách thành tập hợpPhép hợp của các tập hợpPhép giao của các tập hợpPhép hiệu của các tập hợpÔn tập: danh sách khách mời không trùng lặpTự luyện tập: Trình biên dịch Dart online