2016-12-17 3 views
0

ここで達成しようとしているのは、すべての数の和、合計に従って昇順で整理し、どの文字列が最大であるかを決定します。私は 'ReferenceError:tempArrayはeval:19:23で定義されていません。'というクイック編集の後、 '不正な戻り値eval'というエラーコードを受け取りました。

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); 
関連する問題