Javascript在中创建对象,如果不继续

Javascript在中创建对象,如果不继续,javascript,Javascript,这是我的代码: var cleanname = v.name.replace(/\s/g, "_").toLowerCase(); if(typeof(kpiValues[v.category]) === "undefined") { kpiValues[v.category] = {}; if(typeof(kpiValues[v.category][cleanname] === "undefined")) { kpiValues[v.category][cleanname]

这是我的代码:

var cleanname = v.name.replace(/\s/g, "_").toLowerCase();
if(typeof(kpiValues[v.category]) === "undefined") {
  kpiValues[v.category] = {};
  if(typeof(kpiValues[v.category][cleanname] === "undefined")) {
    kpiValues[v.category][cleanname] = [];
  }
}
if(departments !== "default") {
  if(typeof(kpiValues[v.category][cleanname][0]) === "undefined") {
    kpiValues[v.category][cleanname][0] = {};
    kpiValues[v.category][cleanname][0].value = 0;
  }
}
这一行:

if(typeof(kpiValues[v.category][cleanname][0]) === "undefined") {
给我一个错误,我完全搞不懂为什么。在第一个if块中,我确保它构建了对象/数组,但由于某些我无法理解的原因,它抛出以下错误:

TypeError: Cannot read property '0' of undefined
有什么建议吗?

不是Javascript中的函数,因此您可以使用

typeof oprand
考虑这一点:

if(typeof kpiValues[v.category][cleanname][0]  === "undefined") {

typeof
在Javascript中不起作用,因此使用类似于
typeof kpiValues[v.category][cleanname][0]
。如果
typeof(kpiValues[v.category]
未定义,则首先如果从未输入块,并且
kpiValues[v.category][cleanname]
可能永远不会被创建。完全正确的约翰尼-这是我的问题的一部分。这帮助我找到了我的实际问题:这(部分)修复了我的问题,至少帮助我找到了我的实际问题:
typeof(kpiValues[v.category][cleanname]==“undefined”**)