为什么这个数组在这个函数的末尾没有填充?

时间:2017-10-06 19:07:14

标签: angular typescript

我有以下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?

1 个答案:

答案 0 :(得分:0)

这一行:

if (matches.length == 0) selectedTags.push(matches[0]);

错了。如果matches.length==0matches[0]未定义,也没有任何内容被推送到selectedTags

尝试:

if (matches.length > 0) selectedTags.push(matches[0]);

代替。