【问题标题】:Filter letter by letter on Array Angular在 Array Angular 上逐个字母过滤
【发布时间】:2018-01-16 20:36:13
【问题描述】:

我正在尝试按如下方式在数组上逐字过滤

我的JSON

"mainArr":[  
       {  
          "data":false,
          "myArr":[  
             {  
                "myNumber": 12345,
             },
             {
                "myNumber": 8961,
             }
          ]
       }
    ]

这是我在下面起草的用于搜索的代码,但无法根据字母按键或按键或离子输入选择对象

    if (filterVal && filterVal.trim() !== '') {
        this.myArray = this.myArray.filter(function (item) {
          const results: any = [];
          const obj = item.mainArr[0];
          if (_.has(obj, 'myArr')) {
            console.log(obj.myArr.indexOf(filterVal));

            for (let i = 0; i < obj.myArr.length; i++) {
               if (obj.myArr.indexOf(filterVal) !== -1)
                 return results.push(obj.myArr[i]);
               }
            }
          }
        });
      }

Refered URL

【问题讨论】:

  • MainArr -> mainArr。从您的代码中删除any,因为它会给您一种虚假的安全感。

标签: javascript angularjs typescript lodash typescript2.0


【解决方案1】:

尝试了另一种实现方式,但是退格键没有重新绑定到原始数​​组

let results: any = [];
events.subscribe('filterSearch', (filterVal: string) => {
  if (filterVal && filterVal.trim() !== '') {
    results = Object.assign(this.allEventsSorted.filter(function (item: any): any {
      const fltDty = item.mainArr[0];

      if (_.has(fltDty, 'myArr')) {
        return _.some(
          item.mainArr[0].myArr,
          function (tag): any {
            return _.startsWith(tag.myNumber, filterVal);
            // return _.includes(tag.myNumber, filterVal);
          }
        );
      }
    }));
    this.allEventsSorted = results;
  }
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-31
    • 2014-06-08
    • 2021-08-30
    • 1970-01-01
    • 2023-01-11
    • 1970-01-01
    • 2013-01-12
    • 2012-01-28
    相关资源
    最近更新 更多