IE中的Javascript .length不正确

Dar*_*bio 5 javascript internet-explorer

我有一个对象如下:

    var dataSources = [
        {
            Stage:  [2, 3, 4],
            Name:   "GetAustralianStateList"
        },
        {
            Stage: [2, 3, 4],
            Name: "GetGenderList"
        },
        {
            Stage: [2, 3, 4],
            Name: "GetTitleList"
        },
        {
            Stage: [2, 3, 4],
            Name: "GetCountryList"
        },
        {
            Stage: [2, 3, 4],
            Name: "GetRegionList"
        },
        {
            Stage: [2, 3, 4],
            Name: "GetNonEnglishLanguageList"
        },
        {
            Stage: [2, 3, 4],
            Name: "GetContactRelationshipList"
        },
        {
            Stage: [3, 4],
            Name: "GetCompanyCodeList"
        },
        {
            Stage: [3, 4],
            Name: "GetBusinessContractList"
        },
        {
            Stage: [3, 4],
            Name: "GetPayrollAreaList"
        },
        {
            Stage: [3, 4],
            Name: "GetAdministrationAreaList"
        },
        {
            Stage: [3, 4],
            Name: "GetWorkContractList"
        },
        {
            Stage: [2, 3, 4],
            Name: "GetFirstLanguageList"
        },
    ];
Run Code Online (Sandbox Code Playgroud)

当我dataSources.length在Chrome中调用时,它会返回对象中正确数量的项目.但是Internet Explorer的返回长度比对象实际长度多14到1.

有任何想法吗?

SLa*_*aks 8

看到,最后一个对象之后?

因为它,IE看到了一个被忽略的元素.


Rob*_*obG 6

遗憾的是,您发现了ECMAScript实现中极少数错误之一:IE将数组文字中的单个尾随逗号视为省略,因此它将长度增加1:

var a = [0,1,];

alert(a.length);  // 3 in IE
                  // 2 in other browsers

a.hasOwnProperty('2'); // false in all browsers
Run Code Online (Sandbox Code Playgroud)

上面显示IE将逗号视为一个省略:长度增加了1但是索引2中没有数组成员.