gpt4 book ai didi

javascript - 箭头函数中 Object.values() 的未知行为

转载 作者:行者123 更新时间:2023-12-02 21:08:13 25 4
gpt4 key购买 nike

我正在 Vannila JS 中制作随 secret 码生成器,我在以下代码中遇到未知问题:

function generatePassword(lower, upper, number, symbol, length) {
let generatedPassword = "";
const typesCount = lower + upper + number + symbol;
const typesArr = [{ lower }, { upper }, { number }, { symbol }].filter(
(item) => Object.values(item)[0]
);

// Doesn't have a selected type
if (typesCount === 0) {
return "";
}

// create a loop
for (let i = 0; i < length; i += typesCount) {
typesArr.forEach((type) => {
const funcName = Object.keys(type)[0];
generatedPassword += randomFunc[funcName]();
});
}

const finalPassword = generatedPassword.slice(0, length);

return finalPassword;
}

在这段代码中,如果我将语句括在大括号 {} 中,Object.values(item)[0] 将不起作用:

const typesArr = [{ lower }, { upper }, { number }, { symbol }].filter(
(item) => Object.values(item)[0]
);

我不明白为什么会发生这种情况,我尝试搜索文档但无济于事,谢谢!

最佳答案

为了使 Filter 函数正确工作,它需要返回。虚假值(value)的真实。

当你这样写时

const typesArr = [{ lower }, { upper }, { number }, { symbol }].filter(
(item) => Object.values(item)[0]
);

结果隐式返回,即。 Object.values(item)[0]是返回值

但是如果你这样写

const typesArr = [{ lower }, { upper }, { number }, { symbol }].filter(
(item) => { Object.values(item)[0] }
);

您尚未从过滤器函数返回任何值,您需要为其添加一个 return 语句,例如

const typesArr = [{ lower }, { upper }, { number }, { symbol }].filter(
(item) => { return Object.values(item)[0]; }
);

关于javascript - 箭头函数中 Object.values() 的未知行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61168357/

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