如何在JS和TS中使用映射和过滤器来获取字符串数组?

时间:2018-10-22 00:18:56

标签: javascript jquery angular typescript

我有一个名为MasterSection的文件,它定义了什么是节,其中包含节的逻辑。其他各个部分(食物部分,电视部分)都来自MasterSection逻辑。在MasterSection中,我有一个名为SectionInfo的接口,该接口具有Section的属性,例如id,size等。现在,对于我正在处理的当前部分,我需要访问此接口的属性。 (SectionInfo)。为此,我必须首先获取选定的部分。为此,我们在MasterSection中使用一个称为getSelectedSections的函数。以下功能位于我正在研究的问题所在的部分:

CafeSection.ts中的getSectionInfo

 function getSectionInfo(sectionType: string): number[] {
    const sectionInfo: MasterSection.SectionInfo[] = MasterSection.Model.Sections.SectionInfo;
    const selectedIds: number[] = MasterSection.getSelectedSections(MasterSection.Model.SectionType.CafeSection.Key);

    const cafeInfo = sectionInfo
        .filter((selectedSectionPks: MasterSection.SectionInfo) => selectedSectionPks.indexOf( /*What goes here??*/ !== -1))
        .map((selectedSectionPks: MasterSection.SectionInfo) => $'{selectedSectionPks.id}{selectedSectionPks.size}"); //Is this correct?

     return cafeInfo;

}
MasterSection.ts中的

getSelectedSections

export function getSelectedSections(sectionType: string): number[] {
    return MasterSection.SelectedSections
        .filter((selectedSection: MasterSection.SelectedSections) => selectedSection.SectionKey ===
            sectionKey)
        .map((selectedSection: MasterSection.SelectedSections) => selectedSection.Id);
}

MasterSection.ts中的SectionInfo

 export interface SectionInfo {
    Id: string;
    DaysVisited: string;
    createdBy: string;
    size: string;
}

我正在尝试获取SectionInfo的属性,但是已经很长时间了,似乎我缺少了一些东西。我已经在//代码中注释了需要帮助的部分。预先感谢!

1 个答案:

答案 0 :(得分:2)

对于filter行,我认为您可能正在寻找:

.filter((selectedSectionPks: MasterSection.SectionInfo) =>
    selectedIds.indexOf(parseInt(selectedSectionPks.Id)) !== -1)

如果我理解正确,selectedIds具有选定ID的数组,因此对于每个SectionInfo对象(绑定到selectedSectionPks),您要检查其ID是否在该数组中。我放入parseInt是因为您已将Id的{​​{1}}属性声明为字符串,但是SectionInfoselectedIds。检查这就是您想要的。

对于number[]行,如果要创建一个包含mapId字段的字符串,则字符串插值的正确语法为:

size

当然,您可能希望在两个字段之间添加分隔符,以使其更易于在另一侧进行解析。