Angular 方法来筛选数组
我正在angular中进行一个实现,以查看数组,并根据定义的名称获取值Angular 方法来筛选数组,angular,typescript,Angular,Typescript,我正在angular中进行一个实现,以查看数组,并根据定义的名称获取值 let definitions = [ { definitionsTest1: [ { headerName: 'Status', field: 'status', filter: true, sortable: true }, { headerName: 'Name', field: 'name', filter
let definitions = [
{
definitionsTest1: [
{
headerName: 'Status',
field: 'status',
filter: true,
sortable: true
},
{
headerName: 'Name',
field: 'name',
filter: true,
sortable: true
},
{
headerName: 'Project',
field: 'project',
filter: true,
sortable: true
}
]
},
{
definitionsTest2: [
{
headerName: 'Status',
field: 'status',
filter: true,
sortable: true
},
{
headerName: 'Name',
field: 'name',
filter: true,
sortable: true
},
{
headerName: 'Project',
field: 'project',
filter: true,
sortable: true
}
]
}
]
我正在做数组,所以我可以更改它。但是我的想法是找到,但是因为他们有不同的名字,我不能这样写
return definitions.find(x => x === 'definitionsTest2')
或者至少我不确定,我如何在那里应用find
方法
你能帮我一下吗,或者给我一些关于我应该如何改变阵列或者我该怎么做的想法吗
注意
我可以更改数组或在其上添加新内容,但
名称(definitionsTest1和definitionsTest2)应该在那里。首先,如果每个定义对象都指定了属性,则不需要数组。定义
数组可以是一个对象。大概是这样的:
let definitions = {
definitionsTest1: {...},
definitionsTest2: {...},
...
};
您可以获取初始对象的关键点,并查看所需的关键点是否存在
要获取密钥,只需使用Object.keys()
:
然后搜索所需的密钥:
let key = '...';
let result;
if (keys.indexOf(key) !== -1) {
result = definitions[key];
}
希望这有帮助。您可以检查对象键是否包含您要查找的键,如:
return definitions.find(x => Object.keys(x).includes('definitionsTest2'))
此返回定义.find(x=>x==='definitionsTest2')
与定义.definitionsTest2
相同。我不明白问题出在哪里。定义st2的名称是对象定义中的变量。@Pauho我尝试过这样做,只需放入definitions.definitionst2
,它给了我一个错误属性“definitionst2”不存在一个简单的方法:定义。查找(x=>console.log(object.keys(x.toString()==“definitionst2”)代码>
return definitions.find(x => Object.keys(x).includes('definitionsTest2'))