JS:数组已定义或未定义

时间:2016-12-22 09:02:57

标签: javascript arrays

我有像

这样的数据
data = [cluster1:skill1, cluster1:skill2, cluster1:skill3, cluster2, cluster3:skill4, cluster4:skill5];

从上面的查找中,我使用我试过的代码

为下面的结构建模数据
modelData 
    [0]: 
        Main: cluster1
        Sub: skill1,skill2,skill3

    [1]:
        Main: cluster2
        Sub: //want this to be empty but now it is undefined
    [2]:
        Main: cluster3
        sub: skill4,skill5
// code JS
    dataMap = data().reduce(function (map, item) {
        var key = item.split(':')[0];
        map[key] = map[key] || [];
        map[key].push(item.split(':')[1]);
        return map;
    }, {});

    modelData(Object.keys(dataMap).map(function(key) {
            return {
                Main: ko.observable(key),
                Sub: ko.observableArray(dataMap[key])
        };
    }));

我想要的只是如果查找条目不包含:(冒号),那么该条目应该被视为主值,而子数组应该是空的而不是未定义的。我很困惑,如何检查子数组是否未定义或定义。

任何建议都会有所帮助

1 个答案:

答案 0 :(得分:1)

  

我很困惑,如何检查子数组是否未定义或定义。

查看代码您只需要替换此行

 map[key].push(item.split(':')[1]); // your element at [1] might be undefined

 map[key].push(item.split(':')[1] || []); // if [1] is undefined push [] empty array

您需要检查您尝试推送的数据是否未定义。您可以使用||运算符来完成此操作。