Javascript for 循环函数在另一个函数中不起作用
Javascript for loop function not working in another function
包含 for 循环并在函数 checkCashRegister 中调用的函数“reversedcurrConvert”仅从索引 1 开始工作。奇怪的是,它不适用于索引 0,即 cid[0][0]。无法理解是什么导致了这种行为。
function reversedcurrConvert(cid) {
for (let i = 0; i < cid.length; i++) {
if (i = 0) {
cid[i][0] = "PENNY"
}
if (i = 1) {
cid[i][0] = "NICKEL"
}
if (i = 2) {
cid[i][0] = "DIME"
}
if (i = 3) {
cid[i][0] = "QUARTER"
}
if (i = 4) {
cid[i][0] = "ONE"
}
if (i = 5) {
cid[i][0] = "FIVE"
}
if (i = 6) {
cid[i][0] = "TEN"
}
if (i = 7) {
cid[i][0] = "TWENTY"
}
if (i = 8) {
cid[i][0] = "ONE HUNDRED"
}
}
return cid
}
function checkCashRegister(price, cash, cid) {
let change = {}
cid[0][0] = 0.01;
cid[1][0] = 0.05;
cid[2][0] = 0.1;
cid[3][0] = 0.25;
cid[4][0] = 1;
cid[5][0] = 5;
cid[6][0] = 10;
cid[7][0] = 20;
cid[8][0] = 100;
change['status'] = "CLOSED"
change['change'] = reversedcurrConvert(cid)
return change
}
console.log(checkCashRegister(19.5, 20, [
["PENNY", 0.5],
["NICKEL", 0],
["DIME", 0],
["QUARTER", 0],
["ONE", 0],
["FIVE", 0],
["TEN", 0],
["TWENTY", 0],
["ONE HUNDRED", 0]
]));
第一个问题,你必须在循环中使用 i == x
而不是 i = x
。第二题你做了很多不必要的事情if
。下面是如何使用 object as map
轻松设置值的示例
function reversedcurrConvert(cid) {
const banknoteName = {
0: 'PENNY',
1: 'NICKEL',
2: 'DIME',
3: 'QUARTER',
4: 'ONE',
5: 'FIVE',
6: 'TEN',
7: 'TWENTY',
8: 'ONE HUNDRED',
};
for (let i = 0; i < cid.length; ++i) {
cid[i][0] = banknoteName[i];
}
return cid;
}
function checkCashRegister(price, cash, cid) {
let change = {}
cid[0][0] = 0.01;
cid[1][0] = 0.05;
cid[2][0] = 0.1;
cid[3][0] = 0.25;
cid[4][0] = 1;
cid[5][0] = 5;
cid[6][0] = 10;
cid[7][0] = 20;
cid[8][0] = 100;
change['status'] = 'CLOSED';
change['change'] = reversedcurrConvert(cid);
return change
}
console.log(checkCashRegister(19.5, 20, [
["PENNY", 0.5],
["NICKEL", 0],
["DIME", 0],
["QUARTER", 0],
["ONE", 0],
["FIVE", 0],
["TEN", 0],
["TWENTY", 0],
["ONE HUNDRED", 0]
]));
P.S。我真的没搞清楚为什么你先把numbers设置成cid[x][0]
,然后再把string
设置成for
循环。当您将 cid
传递给 reversedcurrConvert
函数时,您传递的是指向该数组的指针,而不是它的副本,如果您不知道的话。因此,当您更改 reversedcurrConvert
函数中的值时,您也会更改 checkCashRegister
函数中 cid
的值。因此,您可以在调用 reversedcurrConvert
函数
之前设置此字符串而无需循环
包含 for 循环并在函数 checkCashRegister 中调用的函数“reversedcurrConvert”仅从索引 1 开始工作。奇怪的是,它不适用于索引 0,即 cid[0][0]。无法理解是什么导致了这种行为。
function reversedcurrConvert(cid) {
for (let i = 0; i < cid.length; i++) {
if (i = 0) {
cid[i][0] = "PENNY"
}
if (i = 1) {
cid[i][0] = "NICKEL"
}
if (i = 2) {
cid[i][0] = "DIME"
}
if (i = 3) {
cid[i][0] = "QUARTER"
}
if (i = 4) {
cid[i][0] = "ONE"
}
if (i = 5) {
cid[i][0] = "FIVE"
}
if (i = 6) {
cid[i][0] = "TEN"
}
if (i = 7) {
cid[i][0] = "TWENTY"
}
if (i = 8) {
cid[i][0] = "ONE HUNDRED"
}
}
return cid
}
function checkCashRegister(price, cash, cid) {
let change = {}
cid[0][0] = 0.01;
cid[1][0] = 0.05;
cid[2][0] = 0.1;
cid[3][0] = 0.25;
cid[4][0] = 1;
cid[5][0] = 5;
cid[6][0] = 10;
cid[7][0] = 20;
cid[8][0] = 100;
change['status'] = "CLOSED"
change['change'] = reversedcurrConvert(cid)
return change
}
console.log(checkCashRegister(19.5, 20, [
["PENNY", 0.5],
["NICKEL", 0],
["DIME", 0],
["QUARTER", 0],
["ONE", 0],
["FIVE", 0],
["TEN", 0],
["TWENTY", 0],
["ONE HUNDRED", 0]
]));
第一个问题,你必须在循环中使用 i == x
而不是 i = x
。第二题你做了很多不必要的事情if
。下面是如何使用 object as map
function reversedcurrConvert(cid) {
const banknoteName = {
0: 'PENNY',
1: 'NICKEL',
2: 'DIME',
3: 'QUARTER',
4: 'ONE',
5: 'FIVE',
6: 'TEN',
7: 'TWENTY',
8: 'ONE HUNDRED',
};
for (let i = 0; i < cid.length; ++i) {
cid[i][0] = banknoteName[i];
}
return cid;
}
function checkCashRegister(price, cash, cid) {
let change = {}
cid[0][0] = 0.01;
cid[1][0] = 0.05;
cid[2][0] = 0.1;
cid[3][0] = 0.25;
cid[4][0] = 1;
cid[5][0] = 5;
cid[6][0] = 10;
cid[7][0] = 20;
cid[8][0] = 100;
change['status'] = 'CLOSED';
change['change'] = reversedcurrConvert(cid);
return change
}
console.log(checkCashRegister(19.5, 20, [
["PENNY", 0.5],
["NICKEL", 0],
["DIME", 0],
["QUARTER", 0],
["ONE", 0],
["FIVE", 0],
["TEN", 0],
["TWENTY", 0],
["ONE HUNDRED", 0]
]));
P.S。我真的没搞清楚为什么你先把numbers设置成cid[x][0]
,然后再把string
设置成for
循环。当您将 cid
传递给 reversedcurrConvert
函数时,您传递的是指向该数组的指针,而不是它的副本,如果您不知道的话。因此,当您更改 reversedcurrConvert
函数中的值时,您也会更改 checkCashRegister
函数中 cid
的值。因此,您可以在调用 reversedcurrConvert
函数