Nếu tôi có mảng sau:
array = ['a', 'abcde', 'ab'] ;Tôi muốn có được độ dài tối đa của các phần tử mảng IE 5 (đối với phần tử 'ABCDE').
Tôi biết rằng bạn có thể nhận được độ dài của một phần tử mảng thông qua mảng (ví dụ) [1] .length nhưng tôi không biết làm thế nào để có được độ dài tối đa.
Bất kỳ câu trả lời nào trong JavaScript hoặc jQuery sẽ rất tuyệt.
Tia
Paul Jones
Andy e
332K84 Huy hiệu vàng470 Huy hiệu bạc442 Huy hiệu Đồng84 gold badges470 silver badges442 bronze badges
Khi được hỏi ngày 18 tháng 5 năm 2011 lúc 10:49May 18, 2011 at 10:49
1
One-liner cho bạn:
Math.max.apply(Math, $.map(array, function (el) { return el.length }));Ví dụ làm việc: //jsfiddle.net/5sdbx/
Bạn có thể làm điều đó mà không cần jQuery trong các trình duyệt mới hơn (hoặc thậm chí các trình duyệt cũ hơn với việc triển khai khả năng tương thích của Math.max.apply(Math, $.map(array, function (el) { return el.length })); 2) cũng vậy:
Math.max.apply(Math, array.map(function (el) { return el.length }));Đã trả lời ngày 18 tháng 5 năm 2011 lúc 10:55May 18, 2011 at 10:55
Andy Eandy eAndy E
332K84 Huy hiệu vàng470 Huy hiệu bạc442 Huy hiệu Đồng84 gold badges470 silver badges442 bronze badges
4
Khi được hỏi ngày 18 tháng 5 năm 2011 lúc 10:49
Math.max(...array.map(el => el.length));One-liner cho bạn:Apr 9, 2017 at 9:12
Ví dụ làm việc: //jsfiddle.net/5sdbx/
var myarray = ['a','abcde','ab']; var maxlen = 0; for (i=0; i<myarray.length; i++) { if (myarray[i].length>maxlen) { maxlen = myarray[i].length; } }Bạn có thể làm điều đó mà không cần jQuery trong các trình duyệt mới hơn (hoặc thậm chí các trình duyệt cũ hơn với việc triển khai khả năng tương thích của Math.max.apply(Math, $.map(array, function (el) { return el.length })); 2) cũng vậy:May 18, 2011 at 10:53
Đã trả lời ngày 18 tháng 5 năm 2011 lúc 10:55James
Andy Eandy e1 gold badge16 silver badges19 bronze badges
3
Một câu trả lời mới cho một câu hỏi cũ: Trong ES6, bạn có thể làm thậm chí ngắn hơn:
['a', 'abcde', 'ab'].reduce((r,s) => r.length > s.length ? r : s, 0);Đã trả lời ngày 9 tháng 4 năm 2017 lúc 9:12May 8, 2019 at 17:23
Một cách (có thể là rác) để làm điều đó, mà không cần sử dụng jQuery:Manvel
Đã trả lời ngày 18 tháng 5 năm 2011 lúc 10:537 silver badges9 bronze badges
Jamesjames
12.4K1 Huy hiệu vàng16 Huy hiệu bạc19 Huy hiệu đồngTrong những trường hợp như vậy, có một chức năng rất hữu ích. Mảng.Reduce
var maxLength = 0; for (var i = 0, length = array.length; i < length; i++) { maxLength = Math.max(maxLength, array[i].length); };Đã trả lời ngày 8 tháng 5 năm 2019 lúc 17:23May 18, 2011 at 10:52
Manvelmanvelalex
7207 Huy hiệu bạc9 Huy hiệu Đồng197 gold badges869 silver badges977 bronze badges
1
Bạn có thể sử dụng Math.max.apply(Math, $.map(array, function (el) { return el.length })); 3 của JQuery để lặp lại đẹp hơn một chút.
var maxLength = 0; $.each(array, function(i, item) { maxLength = Math.max(maxLength, item.length); });
function arrayItemMax(arr) { return arr.reduce(function (result, val) { return Math.max(result, !isNaN(val) ? parseInt(val) : val.length); }, 0); } function print(text) { document.getElementsByTagName('body')[0].innerHTML += text + '<br />'; } print(arrayItemMax(['a', 'abcde', 'ab'])); // 5 print(arrayItemMax([1, 5, 2])); // 5 print(arrayItemMax(['1', '5', '2'])); // 5
Hoặc JavaScript đơn giản ...
function(a){return a.reduce(function(r,v){return Math.max(r,!isNaN(v)?parseInt(v):v.length);},0);}
Đã trả lời ngày 18 tháng 5 năm 2011 lúc 10:52Feb 20, 2015 at 17:35
AlexalexMr. Polywhirl
470K197 Huy hiệu vàng869 Huy hiệu bạc977 Huy hiệu Đồng12 gold badges81 silver badges127 bronze badges
Bằng cách sử dụng Math.max.apply(Math, $.map(array, function (el) { return el.length })); 4, bạn có thể thực hiện tính toán Math.max.apply(Math, $.map(array, function (el) { return el.length })); 5 cho mỗi mục trong mảng. Không quan trọng liệu các mục trong mảng là chuỗi hay mảng con (mảng 2D, ma trận, v.v.), điều này sẽ hoạt động vì Math.max.apply(Math, $.map(array, function (el) { return el.length })); 6 và Math.max.apply(Math, $.map(array, function (el) { return el.length })); 7 đều có chức năng Math.max.apply(Math, $.map(array, function (el) { return el.length })); 8.
Tôi cũng đã thêm một séc cho các giá trị số nguyên theo nhận xét của bạn ở trên.
Lót:
Đã trả lời ngày 18 tháng 5 năm 2011 lúc 10:55May 18, 2011 at 10:55
Andy Eandy e
Math.max.apply(Math, $.map(array, function (el) { return el.length })); 0Một câu trả lời mới cho một câu hỏi cũ: Trong ES6, bạn có thể làm thậm chí ngắn hơn:
Math.max.apply(Math, $.map(array, function (el) { return el.length })); 1Đã trả lời ngày 9 tháng 4 năm 2017 lúc 9:12Nov 7, 2012 at 9:21
Một cách (có thể là rác) để làm điều đó, mà không cần sử dụng jQuery:avalkab
Đã trả lời ngày 18 tháng 5 năm 2011 lúc 10:533 silver badges18 bronze badges