Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.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 NodeJs String.inculdes()无法按预期工作_Javascript_Node.js_String_Filter - Fatal编程技术网

Javascript NodeJs String.inculdes()无法按预期工作

Javascript NodeJs String.inculdes()无法按预期工作,javascript,node.js,string,filter,Javascript,Node.js,String,Filter,由于某些原因,我无法正确筛选列表,因为name.includes(line)总是false http .createServer((请求、恢复)=>{ //…在这里,您可以创建JSON格式的数据响应 让body=[]; 请求 .on('错误',(错误)=>{ 控制台错误(err); }) .on('数据',(块)=>{ 推(块); }) .on('end',()=>{ body=Buffer.concat(body.toString(); 控制台日志(req); const list=JSON.

由于某些原因,我无法正确筛选列表,因为
name.includes(line)
总是
false

http
.createServer((请求、恢复)=>{
//…在这里,您可以创建JSON格式的数据响应
让body=[];
请求
.on('错误',(错误)=>{
控制台错误(err);
})
.on('数据',(块)=>{
推(块);
})
.on('end',()=>{
body=Buffer.concat(body.toString();
控制台日志(req);
const list=JSON.parse(JSON.stringify(data)).filter({name})=>{
console.log(
name.toLowerCase(),
body.toLowerCase(),
name.toLowerCase().includes(body.toLowerCase())
);
log(name.toLowerCase().includes('damage');
返回name.toLowerCase().includes(body.toLowerCase());
});
控制台日志(列表);
HandlerResponse(请求、回复、数据);
});
})
.监听(端口);
结果:

“损坏”
损坏反向机油调节器“损坏”错误
真的
音量提前调节器“损坏”错误
假的
音量提前洗发水“损坏”错误
假的
损坏反转油洗发水“损坏”错误
真的
颜色维持专业“伤害”假
假的
损坏反向头发血清“损坏”错误
真的
损坏反向修复性头发处理“损坏”错误
真的
[]
我不知道为什么它会显示我
false
。为了检查我的理智,我检查了浏览器和shows
true
中的第一行


提前感谢。

String.prototype.includes()区分大小写。

以下是我解决此问题的工作循环。这个问题是因为body没有通过Buffer.concat(body.toString()正确地进行转换,所以我用以下方式对其进行了更改:

constbodyline=JSON.stringify(body);
主体=主体线。子字符串(3,主体线。长度-3);
改变了身体的自我创造: 而不是

let body=[];
请求
.on('错误',(错误)=>{
控制台错误(err);
})
.on('数据',(块)=>{
推(块);
})
我用字符串创建替换数组,并将块合并

let body='';
请求
.on('错误',(错误)=>{
控制台错误(err);
})
.on('数据',(块)=>{
body+=chunk.toString();
})

这是一个好消息。还有,为什么在你的
“损坏”
周围有引号?但这甚至不像
name.toLowerCase().includes(body)
你已经注意到,
“损坏反向机油调节器”。toLowerCase().includes(“损坏”)==true
。您的某些字符串不是您认为的字符串(例如,请注意上面提到的引号),根本不是字符串(它不是您正在调用的
String.prototype.includes
,或者传递的不是字符串的内容可能会发生变化),或者你以前错过了
toLowerCase
。你能包括
data
实际上是什么及其类型吗?我可能找到了原因,我的身体因为某种原因无法匹配
body=Buffer.concat(body.toString()
但是
name.toLowerCase().includes('damage')
工作正常。它来自NodeJS服务器上的响应,但它甚至不像
name.toLowerCase().includes(body)