你的问题很不清楚.我想989和999将返回1.因为你只处理数字,所以解决方案是:
>创建一个包含9个元素的布尔数组,从0到9,名为isChecked
>用false初始化它.
>每当你找到一个匹配的数字,比如9,将布尔元素转为true,这样就不再计算它(isChecked [9] = true).
这是代码:
var isChecked = [];
function resetArray(input) {
for (var i = 0; i < 10; i++) {
input[i + ''] = false;
}
}
resetArray(isChecked);
var firstNumber = '989',
secondNumber = '999',
correctNumbers = 0,
fNum, sNum;
for (var i = 0; i < firstNumber.length; i++) {
fNum = firstNumber.charAt(i);
// Skip already checked numbers
if (isChecked[fNum]) {
continue;
}
for (var j = 0; j < secondNumber.length; j++) {
sNum = secondNumber.charAt(j);
if (fNum == sNum && !isChecked[sNum]) {
correctNumbers++;
isChecked[sNum] = true;
}
}
}
console.log(correctNumbers);
如果您发现任何不清楚的地方,请随时问我:)