Angular 如何通过检查元素的键从数组中筛选元素
我正在尝试根据输入字段中输入的数字筛选月份 例如,如果我在输入字段中输入'5',它应该过滤'May' 我的阵列是: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
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
});
我使用过滤器索引作为键,因为无论如何,它没有按照迭代正确地获取对象的键