将代码从Java移植到JavaScript是一项相当容易的任务.
您可能应该包含完整的Java代码.以下是我认为它会是什么样子:
我看到characters.get
被称为characters.get
,所以看起来characters
是List<Character>
.更好的做法是展示Java代码如何将String
转换为List
.
import java.util.List;
public class Validator {
private static final int[] INN_MULTIPLIERS = {-1, 5, 7, 9, 4, 6, 10, 5, 7};
public static boolean isValid(List<Character> characters) {
int sum = 0;
int lastCharacterIndex = characters.size() - 1;
for (int index = 0; index < lastCharacterIndex; index++) {
sum += Character.digit(characters.get(index), 10) * INN_MULTIPLIERS[index];
}
int checkDigit = (sum % 11) % 10;
return Character.digit(characters.get(lastCharacterIndex), 10) == checkDigit;
}
public static void main(String[] args) {
// for (int i = 10000000; i < 99999999; i++) {
// String code = Integer.toString(i, 10);
// List<Character> digits = code.chars().mapToObj(e -> (char) e).toList();
// if (isValid(digits)) {
// System.out.println(i); // A valid code
// }
// }
String code = "18158984"; // Should be valid
List<Character> digits = code.chars().mapToObj(e -> (char) e).toList();
System.out.println(isValid(digits));
}
}
以下是等效的JavaScript代码:
Character.digit
可以移植到parseInt
- Java中的
==
(双等号)在JavaScript中应该是===
(三个等号
const INN_MULTIPLIERS = [-1, 5, 7, 9, 4, 6, 10, 5, 7];
function isValid(characters) {
let sum = 0;
const lastCharacterIndex = characters.length - 1;
for (let index = 0; index < lastCharacterIndex; index++) {
sum += parseInt(characters[index], 10) * INN_MULTIPLIERS[index];
}
const checkDigit = (sum % 11) % 10;
return parseInt(characters[lastCharacterIndex], 10) === checkDigit;
}
const code = "18158984"; // Should be valid
const digits = code.split('');
console.log(isValid(digits));