이 글을 쓴 이유
제가 현재 진행하고 있는 프로젝트에서는 알고리즘을 거의 사용하지 않기 때문에 당연히 이런 부분은 조금 낯설습니다. 최근 코딩을 하다가 배열에서 최대값을 구해야 하는 상황에 직면했는데, 그때 무의식적으로 js의 sort() 함수를 생각하게 됐는데, 지금 생각해보면 정말 '죄악'이다. 그때 저는 마음속으로 약간 뿌듯함을 느꼈습니다. '글쎄, js에 내장된 방법을 사용하면 일반적으로 정렬 알고리즘을 사용하여 해결해야 하는 문제가 해결됩니다. 코드가 짧기 때문에 작성할 필요가 없습니다. 순회 및 비교에 골치 아픈 문제가 있으며 가독성이 좋습니다." 내면의 드라마가 무겁죠? 에헴, 난 아직 어리고 게으르다. js 내생 정렬 함수도 정렬을 사용합니다. 자세한 내용은 js 내생 sort() 함수가 세그먼트 오류에서 구현되는 방법을 참조하세요.
이상한 기술 및 트릭
js에는 "이상한 트릭 및 트릭"이 많이 있으며 때로는 이러한 "이상한 트릭 및 트릭"을 의도적으로 사용하는 경우가 많습니다(참고로 저는 사용하는 것을 반대하지는 않지만 때로는 필요하지 않습니다). 그것을 사용하려면)). 예를 들어, 배열에서 최대값을 찾으려면 js의 배열에서 최대값을 찾는 기본 방법이 없지만 수학에서는 다음과 같이 합니다.
Math.max(22, 79, 33) // 79
배열을 사용하려면 다음과 같이 사용할 수도 있습니다.
var arr = [22, 79, 33]; Math.max.apply(null, arr); // 79
또는 Apply 메서드 없이 배열을 문자열로 변환하고 eval() 메서드를 사용하여 "Math.max(num1, num2, num3)"에 이어붙인 js 코드를 실행할 수도 있습니다.
var max = eval("Math.max(" + arr.join(',') + ")"); // 79
이런 생각을 못 했다면 위에서 언급한 것을 사용하면 됩니다. sort() 함수도 가능합니다:
var arr = [22, 79, 33]; var getMax = function(arr) { var copyArr = JSON.parse(JSON.stringify(arr)); var len = copyArr.length; copyArr.sort(); return copyArr[len - 1]; }; getMax(arr); // 79
멍청한 방법
지금 보면 js의 힘에 놀라실 텐데요. 때로는 "훌륭한 트릭"에 너무 많이 의존하면 "자의식적인 방식" "큰" 상태에 빠지게 됩니다. 결국 js의 힘이 자신의 코딩 수준이 강하다는 것을 의미하지는 않습니다. 그러니 기본으로 돌아가서 어리석은 방법으로 두뇌 능력을 발휘해보세요:
var arr = [22, 79, 33]; var getMax = function(arr) { var len = arr.length, max = arr[0]; while (len--) { if (max >= arr[len]) { continue; } max = arr[len]; } return max; }; getMax(arr); // 79
위 내용은 js에서 배열의 최대값을 찾으려면 영리한 방법과 어리석은 방법 중 어떤 방법을 사용합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!