2017-12-31 43 views
0

sort() 메서드를 사용하여 모든 배열에서 가장 큰 숫자를 하나의 배열로 반환하려고합니다. 나는 정렬을 제외하고 올바르게 전체 코드를했다고 생각 :sort()를 사용하여 배열에서 가장 큰 숫자를 올바르게 반환합니다.

function largestOfFour(arr) { 
    let result=[]; 
    for(let i=0; i < arr.length; i++) { 
     for(let j=0; j < arr[i].length; j++) { 
      let segregatedArr = arr[0][j].sort((a,b)=>b-a); 
     } 
     result = segregatedArr[0][i][0]; 
    } 
    return result; 
} 

largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]); 

그리고 오류 받고 있어요 :

result = $.map(arr, function(value, index) { return [value]; }); 
result.sort().reverse(); 
:

TypeError: arr[0][j].sort is not a function 

내가 가진 배열 슬라이스 방법 또는 매핑을 시도했습니다

그러나 오류는 두 경우 모두 여전히 동일합니다.

+0

공유 당신이 함수에 전달하고있는'arr' 배열의 구조를 사용하려는 경우 귀하의 질문에 대한 복잡성 : 사람들은 ** 당신이 어떤 도움을 제공하기 전에 무엇을하려고하는지 가정해야합니다 **. –

답변

0
function maxArr(arr2D) { 
    let result = []; 
    for(let i = 0; i < arr2D.length; i++) { 
     result[i] = arr2D[i].sort((a, b) => b - a)[0]; 
    } 
    return result; 
} 
0

당신은 가장 많이 얻을 수 Math.max.apply을 사용할 수 있습니다 : 당신이 입력의 샘플을 제공하는 경우, 그것은 도움이 될 것

function largestOfFour(array){ 
    var result = []; 
    for(var i=0; i<array.length;++i){ 
     result.push(Math.max.apply(Math, array[i])); 
    } 
    return result; 
} 
그래서
0

, 나는이 같은 게시물에 대한 생각을 및 원하는 출력.

배열로 배열을 입력하려고합니까? 그런 다음 각 요소가 원래 배열의 가장 큰 요소를 갖는 단일 배열을 출력합니까? 다음과 같이 내가 만든 샘플 입력했다 :

var a1 = [1, 2, 3]; 
var a2 = [5, 19, 7]; 
var a3 = [199, 198, 104]; 
var arrs = [a1, a2, a3]; 
// run the function and view its output: 
console.log(largestOfFour(arrs)); 
// outputs [ 3, 19, 199 ] 

을 그 당신이 가고 있었는지 있다면, 난 당신이 너무 많은 루프 (불필요한 내부 루프와 외부 루프)가 코드 행 그렇게 생각 :

let segregatedArr = arr[0][j].sort((a,b)=>b-a); 

은 숫자 배열이 아닌 숫자를 액세스합니다.

function largestOfFour(arr) { 
    let result=[]; 
    for(let i=0;i<arr.length;i++){ 
     let segregatedArr=arr[i].sort((a,b)=> b-a); 
     result.push(segregatedArr[0]) 
    } 
    return result; 
} 

그래서, I합니다 ('J'인덱스) 내부 루프를 제거하고 메인 루프는 입력 배열의 i 번째 배열을 정렬하여 다음과 같이 I 함수를 수정. 그게 네가 가고 있었던거야?

+1

오, 그게 나를 영원히 받아 들였고, 그 다른 게시물을 알지 못했습니다. 그것들도 좋아 보인다. – Joseph

+0

예, 질문을 수정했습니다. 설명해 주셔서 감사합니다. 한 번 루프를 돌리고 segregatedArr [0]을 사용하여 훨씬 더 많은 이해가 가능합니다. – stepniaczio

0
var array = [ 
    [1, 2, 3, 4], 
    [10, 5, 3, 4], 
    [11, 20, 13, 14], 
    [1, 2, 3, 40] 
]; 

function maxVal(arr) { 
    var max = arr[0]; 
    arr.forEach(function(item) { 
    max = Math.max(item, max); 
    }); 
    return max; 
}; 

function largestOfFour(arr) { 
    return arr.map(function(innerArray) { 
    return maxVal(innerArray); 
    }); 
} 

console.log(largestOfFour(array)); 

또는 당신은 정말 정말 그렇지 않으면 당신의 레이어를 추가 할 것, 일종의 :-)

function maxVal(arr) { 
    arr.sort(function(a, b) { 
    if (a === b) { 
     return 0; 
    } 
    return a > b ? -1 : 1; 
    }); 
    return arr[0]; 
}; 

function largestOfFour(arr) { 
    return arr.map(function(innerArray) { 
    return maxVal(innerArray); 
    }); 
} 

console.log(largestOfFour(array));