2012-02-03 2 views
0
function ArrayAdditionI(arr) { 
    var numbers = arr(); 
    var arraySum = ""; 
    for (var i = 0; i < numbers.length; i++) { 
     arraySum = arraySum + arr[i]; 
}; 
if (numbers.max() <= arraySum) { 
    arr = true 
} 
else if (numbers.max() > arraySum) { 
    arr = false; 
} 

    return arr;    
} 

내가 편곡라는 배열에 저장된 번호를 찾아 그들이까지 추가하거나 가장 많은 총하거나하지 여부를 여부를 확인해야하는 경우 검사합니다. 그렇다면 true를 리턴하십시오. 그렇지 않은 경우 false를 반환합니다.배열의 합이 최대 수보다 큰 경우와 그 반대의 경우도 마찬가지 자바 스크립트

배열을 처음부터 올바르게 호출하고 있는지 확실하지 않습니다.

감사

+0

': 당신이 원하는 작업을 이해하고있어 경우 (변경 항목을 주문하는 경우 문제가되지 않음),이 올바른 코드는 문자열을 합한거야? –

답변

2

당신이 뭔가를 의미?

function ArrayAdditionI(arr) { 

    for (var i = 0, sum=0; i < arr.length; i++) { 
     sum += arr[i]; 
    } 

    return Math.max.apply(Math, arr) <= sum; 
} 
+0

알았습니다. 고맙습니다 –

2
function ArrayAdditionI(input) { 
    var arraySum, max; 
    arraySum = max = input[0]; 
    for (var i = 1; i < input.length; i++) { 
     arraySum += input[i]; 
     if(input[i] > max){ 
      max = input[i]; 
     } 
    }; 

    return arraySum >= max;   
} 
3

나는 실제로 이와 같은 기능을 위해 라이브러리를 작성했습니다.

http://code.google.com/p/pseudosavant/downloads/detail?name=psMathStats.min.js

당신은이 작업을 수행 할 것입니다 :

var arr = [1,2,3,4,5,300]; 
if (arr.max() > arr.sum()){ 
    // Max is greater than sum... 
} 

한 경고를하지만. 이 라이브러리는 일 수있는 배열 객체를 프로토 타입화합니다. 배열에서 for (var i in arr)을 사용하는 다른 스크립팅을 사용하면 안됩니다. 실제로 많은 새로운 기능을 가진 v2 라이브러리로 거의 완료되었으며 더 이상 Array 객체의 프로토 타입을 만들지 않습니다.

코드에서 .max() 및 .sum() 메소드를 가져 와서 원하는 경우 프로토 타입없이 사용할 수 있습니다.

maxArray = function (arr) { 
    return Math.max.apply(Math, arr); 
} 

sumArray = function (arr) { 
    for (var i = 0, length = arr.length, sum = 0; i < length; sum += arr[i++]); 
    return sum; 
} 
1

숫자가 양수인 경우 대답은 보장됩니다. - 합계는 항상 최대 값보다 크거나 같습니다. 그것을 계산할 필요가 있다면 ddlshack의 코드가 좋아 보인다.

코드를 보면 여러 가지 문제가 있습니다. 우선 arr()이 오류를 일으 킵니다. 배열은 함수가 아니며, 함수로 처리하려고 시도하지 않습니다. 배열을 전달할 때 배열을 이미 사용할 수 있습니다. 또한 arraySum0으로 초기화하려면 ""이 아니라 초기화해야합니다. 당신이 그것을하는 방식으로, 배열의 값은 문자열로 강요되고 함께 연결됩니다. 이것은 당신이 찾고있는 것이 아닙니다. 마지막으로 배열은 max() 메소드를 구현하지 않지만 Math은 구현하고 javascript의 함수/메소드는 ddlshack 및 기타로 표시된 방식으로 배열에 적용 할 수 있습니다.

1

유형 missmatch, 잘못된 할당 및 존재하지 않는 메소드에 대한 호출이 있습니다. ` 왜; var에 arraySum = ""이 라인과 함께 무엇

function ArrayAdditionI(arr) { 
    var ret = false; 
    var arraySum = 0; 
    for (var i = 0; i < arr.length; i++) { 
     arraySum += arr[i]; 
    } 
    if (arr.sort()[arr.length-1] <= arraySum) { 
    ret = true 
    } 
    return ret; 
} 
관련 문제