我有像
这样的数据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])
};
}));
我想要的只是如果查找条目不包含:(冒号),那么该条目应该被视为主值,而子数组应该是空的而不是未定义的。我很困惑,如何检查子数组是否未定义或定义。
任何建议都会有所帮助
答案 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
您需要检查您尝试推送的数据是否未定义。您可以使用||
运算符来完成此操作。