在JavaScript方面,我是一个新手。我正在研究一些编码问题,而且我遇到了一堵墙。这是我到目前为止遇到麻烦的代码:
function creditCardTest (creditCardNumbers) {
var creditCardNumbers = [
'7629-1648-1623-7952',
'4962-1694-2293-7910',
'9999-9999-9999-9999', /*For test purposes*/
'4921-2090-4961-7308'
]
var sumArray = [ ]; //parallel to creditCardNumbers array
var largestValue = 0;
var locationOfLargest = 0;
var itemSum = 0;
for(var i = 0; i < creditCardNumbers.length; i++) {
var creditCardItem = creditCardNumbers [ i ];
/*console.log(creditCardItem); For test purposes*/
itemSum = 0; //required for functionality
for (var j = 0; j < creditCardItem.length; j++) {
var stringChar = creditCardItem.charAt( j );
/*console.log(stringChar); For test purposes*/
if ( stringChar >= '0' && stringChar <= '9' ) {
itemSum += parseInt(stringChar);
/*console.log(parseInt(stringChar)); For test purposes*/
}
}
sumArray[ i ] = itemSum;
console.log(sumArray[ i ]); /*required for functionality*/
}
if (!largestValue || sumArray[ i ] > largestValue) {
largestValue = sumArray[ i ];
locationOfLargest = i;
}
console.log(locationOfLargest);
}
creditCardTest();
我希望返回一个数组中最大的索引,但我只得到了第0个索引。有什么输入吗?
答案 0 :(得分:0)
这是一个小fiddle
var largestValue = 0,
locationOfLargest = 0,
sumArray = [1, 100, 909, 8, 91098, 923823];
for (var i = 0; i < sumArray.length; i++) {
if (!largestValue || sumArray[i] > largestValue) {
largestValue = sumArray[i];
locationOfLargest = i;
}
}
console.log(locationOfLargest, largestValue);
&#13;
甚至更快的解决方案:
var arr = [1, 100, 909, 8, 91098, 923823],
index = arr.indexOf(Math.max.apply(Math, arr));
console.log(index);
&#13;
答案 1 :(得分:0)
您可以使用分步方法
var data = ['7629-1648-1623-7952', '4962-1694-2293-7910', '9999-9999-9999-9999', '4921-2090-4961-7308'],
index = data.
map(a => a.match(/\d/g)).
map(a => a.reduce((a, b) => +a + +b)).
reduce((r, a, i, aa) => !i || aa[r] < a ? i : r, -1);
console.log(index);
.as-console-wrapper { max-height: 100% !important; top: 0; }