2016-12-17 5 views
0

여기서 수행하려는 작업은 다음과 같습니다. 모든 수의 합계, 합계에 따라 오름차순으로 정렬하고 가장 큰 문자열을 결정합니다.빠른 편집 후 '잘못된 값으로 eval'이 반환됩니다. 'ReferenceError : tempArray가 eval : 19 : 23에 정의되어 있지 않습니다.'

var cc = ['4916-2600-1804-0530', '4779-252888-3972', '4252-278893-7978', '4556-4242-9283-2260']; 

이 함수는 문자열을 완전한 숫자로 변환하여 가장 높은 숫자를 찾습니다.

function highest(inputArray) { 
    var currentHighest = 0; 
    var largest = 0; 
    var tempArray = []; 
    for (var a = 0; a < inputArray.length; a++) 
    tempArray.push(inputArray[a].replace(/\D/g, '')); 
} 

이 하나가 합쳐집니다.

function sumDigits(strA) { 
    var highest=0; 
    var sum = 0; 
    var largest=0; 
    for (var i = 0; i < strA.length; i++) 
     sum += parseInt(strA.charAt(i), 10); 

    return sum; 
    } 
    for (var b = 0; b < tempArray.length; b++) { 
    var csum = sumDigits(tempArray[b]); 
    if (csum >= currentHighest) { 
     currentHighest = csum; 
     largest = inputArray[b]; 
    } 
} 


cc.forEach(function (b) { 
    total = b.match(/\d/g).reduce(function (r, b) { 
     return r, ++b; 
    }); 
}); 

이 배열은 두 배열을 모두 가져 와서 비교합니다.

var arr0 = ['4916-2600-1804-0530', '4779-252888-3972', '4252-278893-7978', '4556-4242-9283-2260']; 
var arr1 = ['4916-2600-1804-0530', '4779-252888-3972', '4252-278893-7978', '4556-4242-9283-2260']; 
var arrComparison = function(arr0,arr1) { 
for(var t = 0; t <= arr0.length -1; t++) { 
    for(var j =0; j <= arr1.length-1; j++) { 
     if(arr0[t] === arr1[j]) { 
      console.log(arr0[t] + " and " + arr1[j] + " are the same"); 
     } 
    } 
} 
}; 
+0

게시물에 문제를 설명하는 제목을 붙여주십시오. –

답변

0

받고있는 오류를 친절하게 게시하십시오. 나는 당신이 비교 함수를 호출하고 있다고 생각하지 않는다. 변수를 정의하고 변수 arrComparison에 저장하는 것입니다. 몇 가지 오류가 여기에있다

var arrComparison = function({ 

})(); 
0

, 당신은

arrComparison(array1, array2); 

하여 함수를 호출 할 수 있습니다 또는 당신은 자동으로 호출합니다. 루프이, 당신은 return 문을 가지고 있지만이 아닌 기능입니다 :

for (var b = 0; b < tempArray.length; b++) { 
    var csum = sumDigits(tempArray[b]); 
    if (csum >= currentHighest) { 
     currentHighest = csum; 
     largest = inputArray[b]; 
     return largest; 
    } 
} 

당신은 또한 당신의 첫 번째 함수에 tempArray를 정의하지만, 함수에서 아무것도 반환하지 않습니다. for 루프에서 tempArray에 액세스하려고하면 정의되지 않고 오류가 발생합니다.

또한 문제를 올바르게 이해하면 솔루션이 필요 이상으로 복잡해집니다. 예를 들어, 문자열로 표현 된 숫자를 합치려면 다음과 같이 시도하십시오.

var cc = ['4916-2600-1804-0530', '4779-252888-3972', '4252-278893-7978', '4556-4242-9283-2260']; 

function sumDigits(digString) { 
    var sums = []; 
    for (num in cc) { 
    var chunks = digString[num].split('-'); 
    var sum = 0; 
    for (item in chunks) { 
     sum += (parseInt(chunks[item])); 
    } 
    sums.push(sum); 
    } 
    return sums 
} 

var sums = sumDigits(cc);