我有以下TypeScript函数:
setSelectedTagsFilters(tags)
{
//init return var
var selectedTags = [];
//set selected tags filters
if (tags && tags.length > 0)
{
//required for parent context from for loop
let that = this;
//for each tag qs param
for (let tag of tags)
{
//lookup matches
var matches;
if (isNumeric(tag)) matches = that.vm.AllTags.filter(x => x.id == tag);
else matches = that.vm.AllTags.filter(x => x.text == tag);
//if match then add to selectedTags
if (matches.length == 0) selectedTags.push(matches[0]);
}
}
//set the tag filters in batch
this.setTagFilters(selectedTags);
}
我有一个场景,其中2个匹配被推送到选定的标签。但是,在最后一行代码中,selectedTags是一个空数组。知道为什么selectedTags在方法结束时是空的,即使2个对象在for循环中被推送到selectedTags?
答案 0 :(得分:0)
这一行:
if (matches.length == 0) selectedTags.push(matches[0]);
错了。如果matches.length==0
,matches[0]
未定义,也没有任何内容被推送到selectedTags
。
尝试:
if (matches.length > 0) selectedTags.push(matches[0]);
代替。