【问题标题】:Why does one function work, but the second with other variables doesn't?为什么一个函数有效,而带有其他变量的第二个函数却不起作用?
【发布时间】:2022-12-03 04:00:04
【问题描述】:

问题:
我在下面的代码中有两个函数。他们应该在 var amount 时间内从数组中随机选择一个。然后从数组中删除那个随机数。

2 个随机数的第一个函数有效,但第二个函数,小写字母,不。

我试过了:
我试着查看这两个函数,但它们对我来说看起来一样,只是变量不同......

(这是创建随机密码的代码的一小部分。)

// Needed vars
var numbersN = [
    '0',
    '1',
    '2',
    '3',
    '4',
    '5',
    '6',
    '7',
    '8',
    '9'
];
var lowercaseN = [
    'a',
    'b',
    'c',
    'd',
    'e',
    'f',
    'g',
    'h',
    'i',
    'j',
    'k',
    'l',
    'm',
    'n',
    'o',
    'p',
    'q',
    'r',
    's',
    't',
    'u',
    'v',
    'w',
    'x',
    'y',
    'z'
];
var allN = numbersN.concat(lowercaseN);
var password;
var extra_safe = true;

// function randomNumbers (Works!)
var amountNumbers = 2;
function randomNumbers (){
    for (var a = 0; a < amountNumbers; a = a + 1){
        var random = pickRandom(numbersN);
        password = password + random;
        if (extra_safe === true){
            console.log(numbersN);
            delete numbersN[random];
            console.log(numbersN);
            delete allN[random];
        }
    }
}



// function randomLowercase (Doens't work..)
var amountLowercase = 2;
function randomLowercase (){
    for (var b = 0; b < amountLowercase; b = b + 1){
        var random = pickRandom(lowercaseN);
        password = password + random;
        if (extra_safe === true){
            console.log(lowercaseN);
            delete lowercaseN[random];
            console.log(lowercaseN);
            delete allN[random];
        }
    }
}

// Runs function + TEST: prints numbersN before and after the working delete
randomNumbers();

// Runs function + TEST: prints lowercaseN before and after the failed delete
randomLowercase();

// TEST: prints allN, this should show all numbers and lowercase letters except the deleted randoms (It only works for the numbers.)
console.log(allN);

// prints the random numbers + lowercase letters
console.log(password.replace(/['undefined']/g, ''));

谢谢!

阿德里安五世

请注意,我是初学者,英语不是我的母语。对于拼写错误和我的简单代码,我深表歉意。请留下更好的标签等建议。

【问题讨论】:

  • 欢迎来到堆栈溢出!这是您开始熟悉using a debugger 的好机会。当您在调试器中单步执行代码时,哪个操作首先会产生意外结果?该操作中使用的值是什么?结果如何?预期的结果是什么?为什么?要了解有关此社区的更多信息以及我们如何为您提供帮助,请从tour 开始并阅读How to Ask 及其链接资源。

标签: javascript function


【解决方案1】:

randomLowercase 函数的问题在于使用了 delete 关键字。 delete 关键字用于删除对象的属性。由于 lowercaseNallN 变量是字符串数组,而不是对象,因此 delete 关键字无法按预期工作。

然后您可以确定所选字母的索引,并使用 splice() 方法删除数组中该索引处的元素。

删除运算符 here 上的 MDN 页面。

【讨论】:

    猜你喜欢
    • 2018-05-21
    • 2022-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-01
    相关资源
    最近更新 更多