通过访问数组按键和值过滤数组

时间:2018-03-24 07:20:11

标签: arrays angular typescript arraylist filter

如何从数组中的键和值过滤数组?

我需要通过数组中的键和值过滤数组的项,此键将始终包含布尔值。

我知道有一些方法可以做到这一点,但我想要一个更推荐的方法来做到这一点,因为当涉及太多记录时,这会影响过滤器性能。

[
      {name: 'PERSON1', 
      info_add: {name: 'obs', active: true, faithful: false}.........},

      {name: 'PERSON2', 
      info_add: {name: 'obs', active: true, faithful: true}.........},

      {name: 'PERSON3', 
      info_add: {name: 'obs', active: false, faithful: true}.........},
]

如果值为false或true,我需要通过info_add键或active键放入faithful内。

  

active = true => PERSON1对象,PERSON2对象

     

active = false => PERSON3对象

     

faithful = true => PERSON2对象,PERSON3对象

     

忠实=假=> PERSON1对象

由于我的数组非常大而且我有其他数组,我想知道如何最好地过滤来自activefaithful的对象。

目前我只使用下面的方法过滤字符串值,但我想创建另一种方法来提高过滤器性能。

public static filterArrayByString(mainArr, searchText)
{
    if ( searchText === '' )
    {
        return mainArr;
    }

    searchText = searchText.toLowerCase();

    return mainArr.filter(itemObj => {
        console.log(itemObj);
        return this.searchInObj(itemObj, searchText);
    });
}

1 个答案:

答案 0 :(得分:1)

file

您可以使用lodash使用过滤器功能在阵列上轻松应用过滤器。 第一行只是NodeJS使用lodash的方式,其余的是相同的。

在过滤函数的回调函数中,可以单独访问数组中的每个项,以确定条件是否应该在过滤的数组中。 return true表示将包含item,return false表示不包括item。