Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.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
for in-loop不打印所有元素-Javascript_Javascript_Dictionary - Fatal编程技术网

for in-loop不打印所有元素-Javascript

for in-loop不打印所有元素-Javascript,javascript,dictionary,Javascript,Dictionary,我有以下代码片段: var headers = { 'date' : 'Date', 'number' : 'Total Responses', 'number' : 'Total 404 not found', 'number' : 'Total Connects', 'number' : 'Header Bytes', 'nu

我有以下代码片段:

var headers = { 'date' : 'Date', 
                'number' : 'Total Responses', 
                'number' : 'Total 404 not found',
                'number' : 'Total Connects', 
                'number' : 'Header Bytes', 
                'number' : 'Total Bytes',
                'number' : 'Total Connects', 
                'number' : 'Data Read',
                'number' : 'Files Requested'
            };
for (var index in headers) {
    console.log(index + " : " + headers[index])
}
这并不是打印整个地图:

date : Date
number : Files Requested

为什么??对我来说一切似乎都很好(显然不是),但我不明白为什么我不能打印整个结构

您的对象仅包含两个字段。初始化对象时,如果两个字段具有相同的名称,则该名称的值将被最后一个字段覆盖。因此,输出对于JavaScript程序来说是正确的,即使它可能不是您想要的。也许您可以使用对象数组,例如,
[{'date':'date'},{'number':'Total Responses'},{'number':'Total 404 not found'},…]

对象对于每个键只能有一个值。如果有两个或多个相同的键,则使用最后一个键。

您正在使用相同的名称声明属性。因此,相当于:

var headers = {};
headers.date = 'Date';
headers.number = 'Total Responses';
//etc
headers.number = 'Files Requested';
您正在覆盖该属性,以便最后一个属性获胜


我总是认为JavaScript对象是键/值对的字典。同样,您只能有一个键,在本例中,
number

使用foreach循环而不是for循环。看起来您正在声明一个索引变量,但应该将其设置为零并递增,以便循环可以作为替代方法在数组中迭代。

使用唯一的属性名

var headers = { 'date' : 'Date', 
            'number1' : 'Total Responses', 
            'number2' : 'Total 404 not found',
            'number3' : 'Total Connects', 
            'number4' : 'Header Bytes', 
            'number5' : 'Total Bytes',
            'number6' : 'Total Connects', 
            'number7' : 'Data Read',
            'number8' : 'Files Requested'
        };