所以,我有这段代码,我只是想用js做相反的事情。我介绍了一个数字,它按照从max到low到low到max的顺序对自身进行排序,并带有两个变量max和min。我将最大值减去最小值,然后重复直到结果为6174。
我不知道为什么当我将所有这些都放一会儿时,max.join()给我一个错误:“未捕获的TypeError:max.join不是<'anonymous>:28:17处的函数” >
但是暂时没有效果。
var num = prompt('Introduzca un número de 4 digitos de al menos 2 digitos distintos', '1234');
var output = [],
sNum = num.toString(),
n = 0,
max = [],
min = [],
a = 0,
kap= 6174,
v = 1;
while (a != kap) {
for (var i = 0, len = sNum.length; i < len; i++) {
output.push(+sNum.charAt(i));
}
min = output.sort((a, b) => a - b );
var x=3;
for (var c = 0; c < 4; c++) {
max[c] = min[x];
x--;
}
min = min.join('');
max = max.join('');
sNum = parseInt(max)-parseInt(min);
if (sNum == kap) {
a = kap;
}
else {
a = 0;
v++;
}
}
console.log(v);
console.log(a);
var num = prompt('Introduzca un número de 4 digitos de al menos 2 digitos distintos', '1234');
var output = [],
sNum = num.toString(),
n = 0,
max = [],
min = [],
a = 0,
kap= 6174,
v = 1;
for (var i = 0, len = sNum.length; i < len; i++) {
output.push(+sNum.charAt(i));
}
min = output.sort((a, b) => a - b );
var x=3;
for (var c = 0; c < 4; c++) {
max[c] = min[x];
x--;
}
min = min.join('');
max = max.join('');
sNum = parseInt(max)-parseInt(min);
console.log(max);
console.log(min);
console.log(sNum);
非常感谢,我终于看到了问题,现在我已经完成了代码:)
var num = prompt('Introduzca un número de 4 digitos de al menos 2 digitos distintos', '1234');
var sNum = num.toString(),
n = 0,
a = 0,
kap= 6174,
v = 1;
if (num == (1111 || 2222 || 3333 || 4444 || 5555 || 6666 || 7777 || 8888 || 9999 || 0000 || 0)) {
console.log(8);
}
else if (num == 6174) {
console.log(0);
}
else if (sNum.length < 4) {
while (sNum.length < 4) {
sNum = ('0' + sNum);
}
if (sNum == "0000") {
console.log(8);
}
else {
calculoKaprekar();
}
}
else {
calculoKaprekar();
}
function calculoKaprekar () {
while (a != kap) {
var output = [];
sNum = sNum.toString();
for (var i = 0, len = sNum.length; i < len; i++) {
output.push(+sNum.charAt(i));
}
var max = [],
min = [];
min = output.sort((a, b) => a - b );
var x=3;
for (var c = 0; c < 4; c++) {
max[c] = min[x];
x--;
}
min = min.join('');
max = max.join('');
sNum = parseInt(max)-parseInt(min);
if (sNum == kap) {
a = kap;
}
else {
v++;
}
}
console.log(v);
}
答案 0 :(得分:1)
第一次迭代max
是一个您期望的数组:
[
4,
3,
2,
1
]
但是,在第一次迭代中,该值将被重新分配:
max = max.join('');
所以在第二次迭代中,它现在是"4321"
(一个字符串)。
并且"4321".join("")
不是函数,因为join
不是字符串函数。