Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 字符串变为不可变,我可以';我甚至不能删除或修改它的空格_Javascript - Fatal编程技术网

Javascript 字符串变为不可变,我可以';我甚至不能删除或修改它的空格

Javascript 字符串变为不可变,我可以';我甚至不能删除或修改它的空格,javascript,Javascript,朋友们我知道这个标题说的不多,但我有这个拦截器好几天了 在下面的代码中,一切都可以工作,但在我的真实代码中却不行,我无法上传所有代码来重现错误 我在nodejs中实现了一个中间件,该中间件验证用户的角色,当它在最后执行此验证时,它不会输入我的if,因为条件始终为负值 无论我做什么,我都无法改变req.user.rol的值(这就是我的原始代码中的情况,我无法上载原始值,因为如果我执行JSON.stringify()操作,将生成循环结构并生成错误) 我尝试过从这个值中提取空格,也尝试过将其转换为js

朋友们我知道这个标题说的不多,但我有这个拦截器好几天了

在下面的代码中,一切都可以工作,但在我的真实代码中却不行,我无法上传所有代码来重现错误

我在
nodejs
中实现了一个
中间件
,该中间件验证用户的角色,当它在最后执行此验证时,它不会输入我的
if
,因为条件始终为负值

无论我做什么,我都无法
改变
req.user.rol
的值(这就是我的原始代码中的情况,我无法上载原始值,因为如果我执行
JSON.stringify()
操作,将生成循环结构并生成错误)

我尝试过从这个值中提取
空格
,也尝试过将其转换为
json
,然后转换为字符串,然后再转换回
json
,尝试
对其值进行变异,但没有成功

    let rol= req.usuario.rol;
    rol1=JSON.stringify({"rol":rol});
    let remove_spaces=JSON.parse(rol1).rol;
    remove_spaces=remove_spaces.replace(/ /g, "")
    console.log(remove_spaces,'Administrador General')
    //'Administrador General','Administrador General'
在代码下面,我将原始代码的输出放在注释中。我希望他们能理解我

这是我的原始代码的截图,我不知道它是否提供了正在发生的事情的线索

我想知道在这种情况下,在我的原始代码中,这个变量(
rol
)不允许删除空格或修改,也就是说,它等于
Administrator或General
,为什么它在比较中返回
false

let数据={
“usuario”:{
“名字”:“yeison velez”,
“阿佩利多斯”:“韦雷斯·古兹曼”,
“最终确认”:空,
“主管阵列id”:[
无效的
],
“足底id”:空,
“_id”:“5fbc7cc705253c2da48209fe”,
“科雷奥”:“耶伊森”_velez11@hotmail.com",
“rol”:“总管理员”,
“_v”:0
}
}
//设rol=req.usuario.rol;在我的原始代码中
设rol=data.rol;
rol1=JSON.stringify({“rol”:rol});
//输出->'{“rol”:“Administrator General”}
让remove_spaces=JSON.parse(rol1.rol);
//输出->'Administrator General'
remove\u spaces=删除\u spaces.replace(//g,“”)
//输出->'Administrator General'
日志(删除_空格,'Administrador General')
//输出->管理员或一般管理员或一般管理员
console.log(删除空格的类型)
//输出->字符串
console.log(类型为“Administrator General”)
//输出->字符串
console.log(删除_spaces.length,'Administrador General'.length)
//输出->21
log(删除_空格=='Administrador General')
//输出->错误

如果(rol=='Administrador General'){//false
开始,代码段中的注释不会反映实际发生的情况。 当我运行你的代码片段时,我得到

未捕获的TypeError:无法访问属性“replace”, 删除未定义的空格

这是因为
rol
未定义,因为您正在访问
data.rol
而不是
data.usuario.rol

一旦我纠正了这一点,一切都按预期进行:

let数据={
“usuario”:{
“名字”:“yeison velez”,
“阿佩利多斯”:“韦雷斯·古兹曼”,
“最终确认”:空,
“主管阵列id”:[
无效的
],
“足底id”:空,
“_id”:“5fbc7cc705253c2da48209fe”,
“科雷奥”:“耶伊森”_velez11@hotmail.com",
“rol”:“总管理员”,
“_v”:0
}
}
//在我的原始代码中,让rol=req.usuario.rol
设rol=data.usuario.rol;
rol1=JSON.stringify({“rol”:rol});
//输出->'{“rol”:“Administrator General”}
让remove_spaces=JSON.parse(rol1.rol);
//输出->'Administrator General'
remove\u spaces=删除\u spaces.replace(//g,“”)
//输出->'Administrator General'
日志(删除_空格“Administrador General”)
//输出->管理员或一般管理员或一般管理员
console.log(删除空格的类型)
//输出->字符串
console.log(类型为“Administrator General”)
//输出->字符串
console.log(删除_spaces.length,'Administrador General'.length)
//输出->21
log(删除_空格=='Administrador General')

//output->false
我们不需要你所有的代码。只需要你的。@PM77-1我的代码在nodejs中…我将它连接到数据库和web请求,我很难将它上传到我们需要足够代码来演示你的问题的地方。开始切掉代码块,直到你可以再重现问题,然后继续后退一步。你可以继续争论并结束你的问题。选择权在你。当我运行此代码时,
让remove_spaces='Administrador General';remove_spaces=remove_spaces。replace(//g,”);
,它在我记录变量时打印
AdministradorGeneral
    let rol= req.usuario.rol;
    rol1=JSON.stringify({"rol":rol});
    let remove_spaces=JSON.parse(rol1).rol;
    remove_spaces=remove_spaces.replace(/ /g, "")
    console.log(remove_spaces,'Administrador General')
    //'Administrador General','Administrador General'