Javascript关联数组不工作?

Javascript关联数组不工作?,javascript,csv,Javascript,Csv,所以我有csv文件,基本上包括学生名单,他们在哪所学校,他们正在学习什么科目(如化学、西班牙语、生物等)。我想让我的程序让用户输入一个主题区域,并让页面返回每个主题的拍摄次数 然后我有了一些javascript,它基本上从一个文本字段接收一些用户输入,对其进行解析,并将其放入一个数组中。然后,它导入csv文件,将主题列与用户输入的内容进行比较,并计算每个主题所花费的时间 我的javascript如下所示: var globalArray = []; var schoolList

所以我有csv文件,基本上包括学生名单,他们在哪所学校,他们正在学习什么科目(如化学、西班牙语、生物等)。我想让我的程序让用户输入一个主题区域,并让页面返回每个主题的拍摄次数

然后我有了一些javascript,它基本上从一个文本字段接收一些用户输入,对其进行解析,并将其放入一个数组中。然后,它导入csv文件,将主题列与用户输入的内容进行比较,并计算每个主题所花费的时间

我的javascript如下所示:

var globalArray      = [];
var schoolList       = [];
var splitTextInput   = [];
var count            = 0;
var splitSubjectArea = []; 

function myFunction()
{
    var textInput = document.getElementById('numb').value;
    var needsTrimTextInput = textInput.split(",");            //creating an array to store user input 

    for( var q = 0; q < needsTrimTextInput.length; q++)          //getting rid of whitespace in user input 
    {
        splitTextInput[q] = needsTrimTextInput[q].trim(); 
    }

    for(var j = 0; j< splitTextInput.length; j++)
    {
        var sSubjectArea = {}; 
        sSubjectArea[ splitTextInput[j] ] = 0;         //assigning the value to 0 to store the count of each subject 
    }

    var fileName = document.getElementById("UniversitySelect").value;

    if( fileName.indexOf(".csv") > 0 )
    {
        d3.csv( "./" + document.getElementById("UniversitySelect").value, bob, counting);
    }

    function bob(d){
        return { Area: d.Area };
    }

    function counting(error, rows)
    { 
        globalArray = rows;
        for( var i = 0; i < rows.length; i++ ) //for the row in the CSV file 
        {                        
            for( var k = 0; k < splitTextInput.length; k++ ) // loop to go through the different inputed subject areas
            {            
                if( rows[i].Area.toLowerCase().indexOf( splitTextInput[k].toLowerCase() ) > -1)
                { 
                    count++; //stores the overall count 
                    sSubjectArea[splitTextInput[k]] += 1;  
                    //console.log(sResearchArea[splitTextInput[k]]);
                }       
            }
        } 
        console.log(rows);
        for(r = 0; r < splitTextInput.length; r++)
        {
            console.log( sSubjectArea[ splitTextInput[r] ] );
        }//for
    }//function
}//function

我真的不明白为什么我会得到这些数字&尤其是楠。。。。有人能帮忙吗?我对javascript非常陌生,所以我可能在理解对象时犯了一些基本错误,但我无法理解。任何帮助都将不胜感激,谢谢

JavaScript没有关联数组类型。@Pointy哦。嗯,我的意思是喜欢对象和属性?@Pointy(我是IE的Chakra JS引擎的软件工程师)-我不同意。在ECMAScript中,每个
对象
类型都可以被视为哈希表(其“属性”作为键)。主要的问题是你不能使用
Number
值作为键(或
字符串
,它们可能被强制为
Number
)。@ocean800请重新格式化你的Javascript,添加更多中间变量,这样我们可以更容易地跟踪你的代码,还请输出
splitTextInputp[k]
的结果。你能做一个JSFIDLE吗?@Dai很好,恕我直言,虽然我同意任何普通对象都像一个关联数组,但有一些重要的区别。首先,名称空间不是完全“干净”的,因为每个对象(例如)都有一个“toString”属性,不管是否添加了一个。其次,与至少某些语言中的关联数组不同,映射的基数没有得到维护-没有
.length
可用于跟踪有多少值。与ES6 Map类的工作方式形成对比。
    1 
    NaN 
    2 
    3 
    4 
    NaN 
    5 
    6 
    Array [ Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, 86 more… ] 
    NaN
    6