我在这里想要完成的是找到所有数字的总和,按照总和按升序组织它们,并确定哪个字符串是最大的。
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中。您可以通过
调用该功能 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);