Không có cách nào để tìm giá trị lớn nhất / tối thiểu trong trường hợp tổng quát mà không lặp lại tất cả n phần tử (nếu bạn đi từ 1 đến n-1, làm cách nào để bạn biết liệu n phần tử không lớn hơn (hoặc nhỏ hơn) tối đa hiện tại / phút)?
Bạn đã đề cập rằng các giá trị thay đổi sau vài giây. Nếu bạn biết chính xác giá trị nào thay đổi, bạn có thể bắt đầu với giá trị tối đa / tối thiểu trước đó và chỉ so sánh với giá trị mới, nhưng ngay cả trong trường hợp này, nếu một trong các giá trị đã được sửa đổi là giá trị tối đa / tối thiểu cũ của bạn, bạn có thể cần lặp lại chúng một lần nữa.
Một cách thay thế khác - một lần nữa, chỉ khi số lượng giá trị thay đổi ít - sẽ là lưu trữ các giá trị trong một cấu trúc như cây hoặc một đống và khi các giá trị mới đến, bạn sẽ chèn (hoặc cập nhật) chúng một cách thích hợp. Nhưng liệu bạn có thể làm điều đó hay không thì không rõ ràng dựa trên câu hỏi của bạn.
Nếu bạn muốn nhận phần tử tối đa / tối thiểu của một danh sách nhất định trong khi lặp qua tất cả các phần tử, thì bạn có thể sử dụng một cái gì đó như đoạn mã bên dưới, nhưng bạn sẽ không thể làm điều đó nếu không xem qua tất cả chúng
var list = { "a":4, "b":0.5 , "c":0.35, "d":5 };
var keys = Object.keys(list);
var min = list[keys[0]];
var max = list[keys[0]];
var i;
for (i = 1; i < keys.length; i++) {
var value = list[keys[i]];
if (value < min) min = value;
if (value > max) max = value;
}