Javascript Arrow函数中Object.values()的未知行为
我正在用Vannila JS制作一个随机密码生成器,我在下面的代码中遇到了一个未知问题:Javascript Arrow函数中Object.values()的未知行为,javascript,html,arrow-functions,Javascript,Html,Arrow Functions,我正在用Vannila JS制作一个随机密码生成器,我在下面的代码中遇到了一个未知问题: 函数生成器密码(下、上、数字、符号、长度){ 让generatedPassword=“”; const typescont=下限+上限+数字+符号; 常量typesArr=[{lower},{upper},{number},{symbol}]。筛选器( (项)=>对象值(项)[0] ); //没有选定的类型 如果(类型查询===0){ 返回“”; } //创建一个循环 for(设i=0;i{ const f
函数生成器密码(下、上、数字、符号、长度){
让generatedPassword=“”;
const typescont=下限+上限+数字+符号;
常量typesArr=[{lower},{upper},{number},{symbol}]。筛选器(
(项)=>对象值(项)[0]
);
//没有选定的类型
如果(类型查询===0){
返回“”;
}
//创建一个循环
for(设i=0;i{
const funcName=Object.keys(类型)[0];
generatedPassword+=randomFunc[funcName]();
});
}
const finalPassword=generatedPassword.slice(0,长度);
返回最终密码;
}
在这段代码中,如果我将语句括在大括号{}中,则对象.values(item)[0]不起作用:
const typesArr = [{ lower }, { upper }, { number }, { symbol }].filter(
(item) => Object.values(item)[0]
);
我不明白为什么会发生这种情况,我试着搜索文档,但没有用,谢谢 为了使过滤器功能正常工作,它需要返回。虚假价值的真理 当你这样写的时候
const typesArr = [{ lower }, { upper }, { number }, { symbol }].filter(
(item) => Object.values(item)[0]
);
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]
);
const typesArr = [{ lower }, { upper }, { number }, { symbol }].filter(
(item) => { Object.values(item)[0] }
);
您还没有从filter函数返回任何值,您需要为它添加一个return语句,如
const typesArr = [{ lower }, { upper }, { number }, { symbol }].filter(
(item) => { return Object.values(item)[0]; }
);
如果没有大括号,你现在会出现什么错误?我检查了控制台,但当我将它括在大括号中时,似乎没有给出错误,但代码也不起作用。。。但是如果删除了大括号,代码就可以正常工作。你是说如果你写
consttypesarr=[{lower}、{upper}、{number}、{symbol}],它就不工作了吗代码>确切地说,它不以这种方式工作&甚至不显示任何错误.filter((项)=>Object.values(项)[0])代码>你在这段代码中尝试了什么。您是否打算使用.map()
方法,因为筛选器用于筛选数组,然后返回该值而不是返回特定值。如果您可以回答此问题,请