将下面代码中相似的代码行分组在一起以进行一些数组过滤

我在 if else 条件中重复使用相同的数组过滤器功能,但每种情况下只有属性不同。有没有办法将它们组合在一起,还是像下面这样正确?



private _filter(value: string, filterIndex, type: string): string[] {

    let filterArray = [];

    const filterValue = value.toLowerCase();

    if (filterIndex == 0) {  // Index for Type

      if (type === 'Dsc') {

        this.assetTypeData.filter((option) => option.assetTypeDsc.toLowerCase().includes(filterValue)).forEach(element => {

          filterArray.push(element.assetTypeDsc)

        });

      } else {

        this.assetTypeData.filter((option) => option.assetTypeCde.toLowerCase().includes(filterValue)).forEach(element => {

          filterArray.push(element.assetTypeCde)

        });

      }

    } else if (filterIndex == 1) { // Index for Make


      if (type === 'Dsc') {

        this.assetMakeData.filter((option) => option.assetMakeDsc.toLowerCase().includes(filterValue)).forEach(element => {

          filterArray.push(element.assetMakeDsc)

        });

      } else {

        this.assetMakeData.filter((option) => option.assetMakeCde.toLowerCase().includes(filterValue)).forEach(element => {

          filterArray.push(element.assetMakeCde)

        });

      }

}


繁花不似锦
浏览 83回答 1
1回答

千巷猫影

试图将所有可以分组的东西分组private _filter(value: string, filterIndex, type: string): string[] {    const filterValue = value.toLowerCase();    return (filterIndex == 0 ? this.assetTypeData : this.assetMakeData)       .map(option => option[(filterIndex == 0 ? 'assetType': 'assetMake') + type])       .filter(assetValue => assetValue.toLowerCase().includes(filterValue));}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript