Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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 奇数bug,不可见字符-隐藏引号和空格_Javascript_Arrays_Xmlhttprequest - Fatal编程技术网

Javascript 奇数bug,不可见字符-隐藏引号和空格

Javascript 奇数bug,不可见字符-隐藏引号和空格,javascript,arrays,xmlhttprequest,Javascript,Arrays,Xmlhttprequest,我正在通过XMLHttpRequest读取一个文本文件,并通过responseText.split('\n')获取每一行。之后,我将通过tab通过shift().split('\t')将每个字符集存储在一个数组中,这些字符由最初拆分的第一个元素分隔。然后,我根据这些条目将动态对象属性分配给。。物体。 代码如下所示: var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function(){ if(xhr.rea

我正在通过
XMLHttpRequest
读取一个文本文件,并通过
responseText.split('\n')
获取每一行。之后,我将通过tab通过
shift().split('\t')
将每个字符集存储在一个数组中,这些字符由最初拆分的第一个元素分隔。然后,我根据这些条目将动态对象属性分配给。。物体。 代码如下所示:

var xhr = new XMLHttpRequest();
    xhr.onreadystatechange = function(){
        if(xhr.readyState == 4 && xhr.status == 200){
            var response = xhr.responseText;
                intermediary = response.trim().split('\n'), //split by new line
                headers = intermediary.shift().split('\t'), //remove table headers, but keep reference
                headersLength = headers.length;

            //WEIRD STUFF TEST
            o = new Object;
            for(var i=0; i < headers.length; i++){
                var a = headers[i];
                o[a] = '';
            }
            console.log(headers);
            console.log(o);
            //END OF WEIRD STUFF TEST

//rest of code
var xhr=new-XMLHttpRequest();
xhr.onreadystatechange=函数(){
如果(xhr.readyState==4&&xhr.status==200){
var response=xhr.responseText;
intermediate=response.trim().split('\n'),//按新行拆分
headers=intermediate.shift().split('\t'),//删除表头,但保留引用
headersLength=headers.length;
//奇怪的东西测试
o=新对象;
对于(变量i=0;i
现在进入奇怪的部分。当我记录Header数组时,我会说:
[“Bob”,“Max”]
但是当我创建对象属性时,我会得到
{Bob:,“Max:”}
-注意Max周围的引号。 更奇怪的是,Firefox没有加引号,IE(Edge)在最后一个引号前加了一个额外的空格
“Max”
。 解决方法是执行一个
shift().trim().split('\t')
-基本上,确保这个班次没有携带任何东西

我已经在多个编辑器上启用了所有隐藏字符、制表符和空格,并且文件中没有任何隐藏的内容。我使用的是Windows 10(不知道这是否重要,但可能会)

我想知道的是为什么会发生这种情况?一个详细的解释(可以是技术性的)非常感谢。我认为导致浏览器之间行为差异的原因是,属性名称不能以空格结尾,但为什么首先会在其中隐藏一个空格?因为文件中没有任何内容可以看到它

如果我是个白痴,答案就在我面前,那也行

注意:在
标题[i]
上执行
.replace('',)
修剪()
,不起作用。
注2:查看日志(注释)很明显为什么删除空格不起作用。但问题仍然存在-回车是如何进入的并且不可见?

您可以使用
.charCodeAt()
函数编写一个函数来转储字符串中的字符代码。请向我们展示
控制台.log(JSON.stringify)的内容(标题),JSON.stringify(o))
gives@Bergi[“BrandID”,“Name\r”]{“BrandID:”“Name\r:”“}-输出log@Pointy好主意。您正在拆分
\n
-源文件中的行终止符可能是两个字符的序列
\r\n
。因此,文件中的第一个字符串是可以的,因为它前面没有行终止符,但是行末尾的字符串会在末尾加上
\r