Angular 如何通过检查元素的键从数组中筛选元素

Angular 如何通过检查元素的键从数组中筛选元素,angular,typescript,Angular,Typescript,我正在尝试根据输入字段中输入的数字筛选月份 例如,如果我在输入字段中输入'5',它应该过滤'May' 我的阵列是: items = [ {0: 'Jan'}, {1: 'Feb'}, {2: 'Mar'}, {3: 'Apr'}, {4: 'May'}, . . . {11: 'Dec}' ] 我正试图通过这种方式,但无法解决问题 const inputText= '5'; const filteredMonths

我正在尝试根据输入字段中输入的数字筛选月份

例如,如果我在输入字段中输入'5',它应该过滤'May'

我的阵列是:

items = [
    {0: 'Jan'},
    {1: 'Feb'},
    {2: 'Mar'},
    {3: 'Apr'},
    {4: 'May'},
    .
    .
    .
    {11: 'Dec}'
 ]
我正试图通过这种方式,但无法解决问题

 const inputText= '5';

 const filteredMonths = items.filter(item => {
        return (Object.keys(item).find(key =>
                item[key] && item[key].toString().toLowerCase().includes(inputText))
    });

所以,如果我输入5,在filteredMonths中,应该有1个元素“March”。

您可以这样做

 const inputText= '5';
 const filteredMonths = items.filter(obj => (inputText - 1) in obj)
console.log(filteredMonths[0][inputText-1]) //May
试试这个:

const items = [
  { 0: "Jan" },
  { 1: "Feb" },
  { 2: "Mar" },
  { 3: "Apr" },
  { 4: "May" }
];

const inputText = "2";

const filteredMonths = Object.values(items.find(
  obj => parseInt(inputText) - 1 in obj
));

您不需要在此处专门使用
过滤器
。您只需使用索引访问密钥:

const month=项目[parseInt(inputText)][parseInt(inputText)];

您需要做的就是确保inputText始终是对象中存在的键,否则您将得到必须处理的
未定义的
结果。

如果您想使用筛选器进行此操作,您可以通过检查条目是否有键值来完成:

const inputText = '5';
const key = parseInt(inputText) - 1; // Because your key is a number and because you associated May with 4, not 5

const result = items.filter(item => item[key]); // returns [{4: 'may'}]
如果希望结果仅包含该值,可以使用映射:

const result = items
        .filter(item => item[key]) // returns [{4: 'may'}]
        .map(item => item[key]); // returns ['may']
但是,我真的不明白为什么不使用字符串数组:

const items = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec'];
const result = items[key]; // returns 'may'

感谢大家的快速建议,但就我而言,我能够通过以下方式解决问题:

 const inputText = searchText.toString().toLowerCase();
 const filteredList = items.filter((item, key) => {
        return (key+1).toString().toLowerCase() === inputText
    });
我使用过滤器索引作为键,因为无论如何,它没有按照迭代正确地获取对象的键