gpt4 book ai didi

javascript - 为什么使用 while .join() 会给我错误,而不使用它会起作用

转载 作者:行者123 更新时间:2023-12-02 22:55:14 26 4
gpt4 key购买 nike

所以,我有这段代码,我只是想用 js 做相反的事情。我引入一个数字,它从最大到较低、从较低到最大进行排序,有两个变量 max 和 min。我将最大值减去最小值,然后重复直到结果为 6174。

我不知道为什么当我把所有这些放在一段时间内 max.join() 给我一个错误:“Uncaught TypeError: max.join is not a function at <'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);
}

最佳答案

第一次迭代 max 是一个数组,正如您所期望的:

[
4,
3,
2,
1
]

但是,在第一次迭代中,值被重新分配:

max = max.join('');

因此,在第二次迭代中,现在是“4321”(字符串)

并且 "4321".join("") 不是一个函数,因为 join不是字符串上的函数。

关于javascript - 为什么使用 while .join() 会给我错误,而不使用它会起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58015674/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com