我收到错误代码'非法返回eval',快速编辑后返回' ReferenceError:tempArray未定义在eval:19:23'

时间:2016-12-17 04:17:10

标签: javascript arrays parseint

我在这里想要完成的是找到所有数字的总和,按照总和按升序组织它们,并确定哪个字符串是最大的。

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");
        }
    }
}
};

2 个答案:

答案 0 :(得分:0)

请发布您收到的错误。我不认为你在调用比较函数。您只是定义它并将其存储在变量arrComparison中。您可以通过

调用该功能
 arrComparison(array1, array2);

或者如果您希望它自动调用,

var arrComparison = function({

})();

答案 1 :(得分:0)

这里有一些错误。在这个for循环中,你有一个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);