Chỉ một dòng :]
var array = [3 , 6, 2, 56, 32, 5, 89, 32],
largest = array.sort[[a,b]=>a-b].reverse[][0];
hoặc thậm chí tốt hơn
...
largest = array.sort[[a,b]=>a-b][array.length - 1];
Cập nhật, tất cả mã ở trên đều tệ khi bạn thêm ví dụ 9 trong bản đoán của tôi vì theo các số mặc định được coi là chuỗi giống nhau, có phiên bản tốt hơn
var array = [3 , 6, 2, 56, 32, 5, 89, 32, 9], largest;
array.sort[function[a, b] {
largest = a > b ? a: b;
}];
Mặc dù trong hiệu suất Wise
...
largest = array.sort[[a,b]=>a-b][array.length - 1];
7 Loop được đề xuất trong các bình luận là tốt hơn //jsperf.com/array-sorting-javascriptUpd2, okay, mã ở trên có một số phần xấu trong đó, vì vậy sẽ không hoạt động như mong đợi. Một lần thử khác:
array.sort[function[a, b] {
return a - b;
}];
largest = array[array.length - 1];
In nhỏ và lớn .. Có ba cách tiếp cận mà tôi bao gồm: Hãy nhớ rằng, bạn có thể lặp lại thông qua một mảng với một vòng lặp đơn giản và truy cập từng thành viên với Array Syntax Arr [i]. Ở đây, giải pháp của tôi, với các nhận xét nhúng để giúp bạn hiểu nó:Mô tả thử thách thuật toán
Trả về một mảng bao gồm số lớn nhất từ mỗi mép con được cung cấp. Để đơn giản, mảng được cung cấp sẽ chứa chính xác 4 mảng con.
function largestOfFour[arr] {
return arr;
}
largestOfFour[[[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]];
Cung cấp các trường hợp thử nghiệm
largestOfFour[[[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]] should return an array.
largestOfFour[[[13, 27, 18, 26], [4, 5, 1, 3], [32, 35, 37, 39], [1000, 1001, 857, 1]]] should return [27,5,39,1001].
largestOfFour[[[4, 9, 1, 3], [13, 35, 18, 26], [32, 35, 97, 39], [1000000, 1001, 857, 1]]] should return [9, 35, 97, 1000000].
Cách tiếp cận số 1: Trả về các số lớn nhất trong một mảng có vòng lặp cho vòng lặp
function largestOfFour[arr] {
// Step 1. Create an array that will host the result of the 4 sub-arrays
var largestNumber = [0,0,0,0];
// Step 2. Create the first FOR loop that will iterate through the arrays
for[var arrayIndex = 0; arrayIndex < arr.length; arrayIndex++] {
/* The starting point, index 0, corresponds to the first array */
// Step 3. Create the second FOR loop that will iterate through the sub-arrays
for[var subArrayIndex = 0; subArrayIndex < arr[arrayIndex].length; subArrayIndex++] {
/* The starting point, index 0, corresponds to the first sub-array */
if[arr[arrayIndex][subArrayIndex] > largestNumber[arrayIndex]] {
largestNumber[arrayIndex] = arr[arrayIndex][subArrayIndex];
/* FOR loop cycles
arrayIndex => i
subArrayIndex => j
Iteration in the first array
For each iteration: arr[i][j] largestNumber[i] if arr[i][j] > largestNumber[i]? then largestNumber[i] = arr[i][j]
First iteration: arr[0][0] => 4 largestNumber[0] => 0 4 > 0? => TRUE then largestNumber[0] = 4
Second iteration: arr[0][1] => 5 largestNumber[0] => 4 5 > 4? => TRUE then largestNumber[0] = 5
Third iteration: arr[0][2] => 1 largestNumber[0] => 5 1 > 5? => FALSE then largestNumber[0] = 5
Fourth iteration: arr[0][3] => 3 largestNumber[0] => 5 3 > 5? => FALSE then largestNumber[0] = 5
Fifth iteration: arr[0][4] => FALSE largestNumber[0] => 5 largestNumber = [5,0,0,0]
Exit the first array and continue on the second one
Iteration in the second array
For each iteration: arr[i][j] largestNumber[i] if arr[i][j] > largestNumber[i]? then largestNumber[i] = arr[i][j]
First iteration: arr[1][0] => 13 largestNumber[1] => 0 13 > 0? => TRUE then largestNumber[1] = 13
Second iteration: arr[1][1] => 27 largestNumber[1] => 13 27 > 13? => TRUE then largestNumber[1] = 27
Third iteration: arr[1][2] => 18 largestNumber[1] => 27 18 > 27? => FALSE then largestNumber[1] = 27
Fourth iteration: arr[1][3] => 26 largestNumber[1] => 27 26 > 27? => FALSE then largestNumber[1] = 27
Fifth iteration: arr[1][4] => FALSE largestNumber[1] => 27 largestNumber = [5,27,0,0]
Exit the first array and continue on the third one
Iteration in the third array
For each iteration: arr[i][j] largestNumber[i] if arr[i][j] > largestNumber[i]? then largestNumber[i] = arr[i][j]
First iteration: arr[2][0] => 32 largestNumber[2] => 0 32 > 0? => TRUE then largestNumber[2] = 32
Second iteration: arr[2][1] => 35 largestNumber[2] => 32 35 > 32? => TRUE then largestNumber[2] = 35
Third iteration: arr[2][2] => 37 largestNumber[2] => 35 37 > 35? => TRUE then largestNumber[2] = 37
Fourth iteration: arr[2][3] => 39 largestNumber[2] => 37 39 > 37? => TRUE then largestNumber[2] = 39
Fifth iteration: arr[2][4] => FALSE largestNumber[2] => 39 largestNumber = [5,27,39,0]
Exit the first array and continue on the fourth one
Iteration in the fourth array
For each iteration: arr[i][j] largestNumber[i] if arr[i][j] > largestNumber[i]? then largestNumber[i] = arr[i][j]
First iteration: arr[3][0] => 1000 largestNumber[3] => 0 1000 > 0? => TRUE then largestNumber[3] = 1000
Second iteration: arr[3][1] => 1001 largestNumber[3] => 1000 1001 > 1000? => TRUE then largestNumber[3] = 1001
Third iteration: arr[3][2] => 857 largestNumber[3] => 1001 857 > 1001? => FALSE then largestNumber[3] = 1001
Fourth iteration: arr[3][3] => 1 largestNumber[3] => 1001 1 > 1001? => FALSE then largestNumber[3] = 1001
Fifth iteration: arr[3][4] => FALSE largestNumber[3] => 1001 largestNumber = [5,27,39,1001]
Exit the FOR loop */
}
}
}
// Step 4. Return the largest numbers of each sub-arrays
return largestNumber; // largestNumber = [5,27,39,1001];
}
largestOfFour[[[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]];
Và đây là không có ý kiến của tôi:
function largestOfFour[arr] {
var largestNumber = [0,0,0,0];
for[var arrayIndex = 0; arrayIndex < arr.length; arrayIndex++] {
for[var subArrayIndex = 0; subArrayIndex < arr[arrayIndex].length; subArrayIndex++] {
if[arr[arrayIndex][subArrayIndex] > largestNumber[arrayIndex]] {
largestNumber[arrayIndex] = arr[arrayIndex][subArrayIndex];
}
}
}
return largestNumber;
}
largestOfFour[[[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]];
Cách tiếp cận #2: Trả về các số lớn nhất trong một mảng có hàm tích hợp-với bản đồ [] và giảm []
Đối với giải pháp này, bạn sẽ sử dụng hai phương thức: phương thức mảng.prototype.map [] và phương thức mảng.prototype.Reduce [].
- Phương thức Bản đồ [] tạo ra một mảng mới với kết quả gọi hàm được cung cấp trên mọi yếu tố trong mảng này. Sử dụng MAP sẽ gọi chức năng gọi lại được cung cấp một lần cho mỗi phần tử trong một mảng, theo thứ tự và xây dựng một mảng mới từ kết quả.map[] method creates a new array with the results of calling a provided function on every element in this array. Using map will call a provided callback function once for each element in an array, in order, and constructs a new array from the results.
- Phương thức giảm [] áp dụng hàm đối với bộ tích lũy và từng giá trị của mảng để giảm nó thành một giá trị duy nhất.reduce[] method applies a function against an accumulator and each value of the array to reduce it to a single value.
Toán tử ternary là toán tử JavaScript duy nhất có ba toán hạng. Toán tử này được sử dụng làm lối tắt cho câu lệnh IF.ternary operator is the only JavaScript operator that takes three operands. This operator is used as a shortcut for the if statement.
[currentLargestNumber > previousLargestNumber] ? currentLargestNumber : previousLargestNumber;
Điều này cũng có thể được đọc như:
if [currentLargestNumber > previousLargestNumber == true] {
return currentLargestNumber;
} else {
return previousLargestNumber;
}
Ở đây, giải pháp của tôi, với các bình luận nhúng:
...
largest = array.sort[[a,b]=>a-b][array.length - 1];
0Và đây là không có bình luận:
...
largest = array.sort[[a,b]=>a-b][array.length - 1];
1Cách tiếp cận #3: Trả về các số lớn nhất trong một mảng có hàm tích hợp-với map [] và Ứng dụng []
Đối với giải pháp này, bạn sẽ sử dụng hai phương thức: phương thức mảng.prototype.map [] và phương thức function.prototype.apply [].
- Phương thức application [] gọi một hàm có giá trị này và các đối số được cung cấp dưới dạng mảng [hoặc một đối tượng giống như mảng].apply[] method calls a function with a given this value and arguments provided as an array [or an array-like object].
Bạn có thể chuyển một mảng các đối số cho một hàm bằng cách sử dụng phương thức application [] và hàm sẽ thực thi các mục trong mảng.apply[] method and the function will execute the items in the array.
Các chức năng như vậy được gọi là các hàm variadic và chúng có thể chấp nhận bất kỳ số lượng đối số nào thay vì một đối số cố định.variadic functions, and they can accept any number of arguments instead of a fixed one.
Hàm Math.Max [] trả về số không hoặc nhiều số lớn nhất và chúng ta có thể vượt qua bất kỳ số lượng đối số nào.Math.max[] function returns the largest of zero or more numbers, and we can pass any number of arguments.
...
largest = array.sort[[a,b]=>a-b][array.length - 1];
2Nhưng bạn có thể vượt qua một loạt các số cho phương thức như thế này:
...
largest = array.sort[[a,b]=>a-b][array.length - 1];
3Đây là nơi phương thức Ứng dụng [] hóa ra là hữu ích:apply[] method turns out to be useful:
...
largest = array.sort[[a,b]=>a-b][array.length - 1];
4Lưu ý rằng đối số đầu tiên áp dụng [] đặt giá trị của ’này, không được sử dụng trong phương thức này, vì vậy bạn vượt qua null.apply[] sets the value of ‘this’, not used in this method, so you pass null.
Bây giờ bạn có một phương thức để trả về số lớn nhất trong một mảng, bạn có thể lặp qua từng mảng con bằng phương thức bản đồ [] và trả về tất cả các số lớn nhất.map[] method and return all largest numbers.
Ở đây, giải pháp của tôi, với các bình luận nhúng:
...
largest = array.sort[[a,b]=>a-b][array.length - 1];
5Và đây là không có bình luận:
...
largest = array.sort[[a,b]=>a-b][array.length - 1];
6Cách tiếp cận #3: Trả về các số lớn nhất trong một mảng có hàm tích hợp-với map [] và Ứng dụng []
Đối với giải pháp này, bạn sẽ sử dụng hai phương thức: phương thức mảng.prototype.map [] và phương thức function.prototype.apply [].
In this article, I’ll explain how to solve freeCodeCamp’s “Repeat a string repeat a string” challenge. This involves…
Phương thức application [] gọi một hàm có giá trị này và các đối số được cung cấp dưới dạng mảng [hoặc một đối tượng giống như mảng].
In this article, I’ll explain how to solve freeCodeCamp’s “Confirm the Ending” challenge.
Bạn có thể chuyển một mảng các đối số cho một hàm bằng cách sử dụng phương thức application [] và hàm sẽ thực thi các mục trong mảng.
This article is based on Free Code Camp Basic Algorithm Scripting “Reverse a String”
Các chức năng như vậy được gọi là các hàm variadic và chúng có thể chấp nhận bất kỳ số lượng đối số nào thay vì một đối số cố định.
This article is based on
Free Code Camp Basic Algorithm Scripting “Factorialize a Number”
Hàm Math.Max [] trả về số không hoặc nhiều số lớn nhất và chúng ta có thể vượt qua bất kỳ số lượng đối số nào.
This article is based on Free Code Camp Basic Algorithm Scripting “Check for Palindromes”.
2...
largest = array.sort[[a,b]=>a-b][array.length - 1];
This article is based on Free Code Camp Basic Algorithm Scripting “Find the Longest Word in a String”.
Nhưng bạn có thể vượt qua một loạt các số cho phương thức như thế này:
This article is based on Free Code Camp Basic Algorithm Scripting “Title Case a Sentence”.
Đây là nơi phương thức Ứng dụng [] hóa ra là hữu ích:
Lưu ý rằng đối số đầu tiên áp dụng [] đặt giá trị của ’này, không được sử dụng trong phương thức này, vì vậy bạn vượt qua null.Medium, Twitter, Github and LinkedIn, right after you click the green heart below ;-]
Bây giờ bạn có một phương thức để trả về số lớn nhất trong một mảng, bạn có thể lặp qua từng mảng con bằng phương thức bản đồ [] và trả về tất cả các số lớn nhất.
Và không có bình luận:
- Tôi hy vọng bạn tìm thấy điều này hữu ích. Đây là một phần trong loạt bài viết của tôi Làm thế nào để giải quyết các bài viết của FCC Thuật toán trên thuật toán Camp miễn phí, trong đó tôi đề xuất một số giải pháp và giải thích từng bước những gì xảy ra dưới mui xe.
- Ba cách để lặp lại một chuỗi trong JavaScriptin Bài viết này, tôi sẽ giải thích cách giải quyết Freecodecamp, lặp lại một chuỗi lặp lại một thử thách chuỗi. Điều này liên quan đến
- Hai cách để xác nhận kết thúc của một chuỗi trong JavaScriptin Bài viết này, tôi sẽ giải thích cách giải quyết FreeCodecamp, xác nhận thử thách kết thúc.
- Ba cách để đảo ngược một chuỗi trong bài viết của JavaScriptthis dựa trên thuật toán cơ bản của Code Code miễn phí
- Ba cách để nhân viên hóa một số trong bài viết của JavaScriptthis dựa trên thuật toán cơ bản của Code Camp miễn phí
- Hai cách để kiểm tra palindromes trong bài viết của JavaScriptthis dựa trên thuật toán cơ bản của Code Camp miễn phí Kiểm tra palindromes.
- Ba cách để tìm từ dài nhất trong một chuỗi trong bài viết của JavaScriptthis dựa trên tập lệnh thuật toán cơ bản Camp Camp miễn phí Tìm từ dài nhất trong một chuỗi.
- Ba cách để tiêu đề trường hợp một câu trong bài viết của JavaScriptthis dựa trên thuật toán cơ bản Camp Camp miễn phí Trường hợp tiêu đề của một câu.
Nếu bạn có giải pháp riêng hoặc bất kỳ đề xuất nào, hãy chia sẻ chúng dưới đây trong các ý kiến.