【问题标题】:Undefined value when trying to use .substring()尝试使用 .substring() 时未定义的值
【发布时间】:2016-03-15 19:34:18
【问题描述】:

我正在尝试检查名为 test[] 的数组的值 "Dep_" 并将其值添加到另一个数组 arrayDep

它失败了,因为它说该位置的数组是undefined,但在控制台日志中可能会看到数组中满是项目。

代码:

jsdom.env({
    url: "http://www.camara.leg.br/internet/deputado/Dep_Lista.asp?Legislatura=55&Partido=QQ&SX=QQ&Todos=None&UF=QQ&condic=QQ&forma=lista&nome=&ordem=nome&origem=None",
    scripts: ["http://code.jquery.com/jquery.js"],
    done: function (errors, window) {
        var test = [];
        var arrayDep = [];
        var value;
        var substring = "Dep_Detalhe.asp";
        var $ = window.$;
        $('a').each(function () {
            test.push($(this).attr('href'));
        });

        console.log(test);
        // inside console log:
        // 'Dep_Detalhe.asp?id=5830400',
        // 'mailto:dep.givaldocarimbao@camara.leg.br',
        // 'Dep_Detalhe.asp?id=5830706',
        // 'mailto:dep.givaldovieira@camara.leg.br',
        // 'Dep_Detalhe.asp?id=5830397',
        // 'mailto:dep.glauberbraga@camara.leg.br', ...

        for (var i = 0; i < test.length; i++) {
            value = test[i];
            if (value.substring(0,3) === "Dep_") { 
                // error occurs here it says:   
                // TypeError: Cannot read property 'substring' of undefined
                arrayDep.push(test[i]);
            }
        }
    }
});

【问题讨论】:

  • 如果您的一个或多个&lt;a&gt; 元素没有“href”属性,那么您将在数组的某些元素中包含undefined
  • @Pointy 但它们不会出现在console.log(test); 之后的日志中吗?
  • @Pointy 我的数组中只有href itens 我只推送hrefs:test.push($(this).attr('href'));
  • 设置断点并单步执行代码,而不是使用console.log。我有时观察到console.log 记录的值不准确。
  • 我在我的数组中发现 undefined !!可能很好,我会尽量避免它

标签: javascript arrays substring jsdom


【解决方案1】:

这很好用,我的数组包含未定义的组件,感谢大家,但最好的提示是使用节点检查器,它可以轻松验证我的大数组中是否存在未定义的组件。

【讨论】:

    猜你喜欢
    • 2011-09-14
    • 2019-12-17
    • 2021-10-26
    • 2015-08-11
    • 1970-01-01
    • 1970-01-01
    • 2011-07-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多