Bạn có thể làm:
var result = Math.max.apply(Math, textarea.value.match(/\d+/g).map(Number));
Breaking nó lên:
textarea.value.match(/\d+/g)
Gets bạn một mảng các số như dây đàn.
.map(Number)
Ánh xạ từng mục nhập của mảng từ một chuỗi đến một số.
Math.max.apply
Calls Math.max
với this
như Math
và là tham số thì mảng ánh xạ.
Chỉnh sửa: Tôi không nhận ra những gì bạn cần phải ở giữa các dấu ngoặc vuông. Bạn sẽ cần phải sử dụng một nhóm chụp cho điều đó và bây giờ nó phức tạp hơn một chút.
var reg = /\[(\d+)\]/g, numberStrings = [ ], match;
while((match = reg.exec(textarea.value)) !== null){
numberStrings.push(match[1]);
}
var result = Math.max.apply(Math, numberStrings.map(Number));
Đó là một chút khó khăn hơn để có được chuỗi các chuỗi với các con số.
Một lựa chọn khác, mà không sử dụng một nhóm chụp:
var numbersInBrackets = textarea.value.match(/\[\d+\]/g);
var numbers = numbersInBrackets.map(function(x) {
return Number(x.substring(1, x.length - 1));
});
var result = Math.max.apply(Math, numbers);
ge t giá trị của textarea trong một biến chuỗi, trích xuất các giá trị trong [] bằng cách sử dụng một regex, phân tích chúng thành các số và sau đó sắp xếp chúng và nhận được giá trị cao nhất. –