У меня есть два разных массива объектов, как переназначить массив свойств объекта.
Использование клавиши для обозначения:
export interface ProductData
{
key:string,
name:string
}
productData:[
{key:'index1',name:'invoice'},
{key:'index2',name:'Multi'}
];
Использование имени для значения:
export interface filterOptions{
label:string;
value:string;
}
Вот как я обрабатываю полученный звонок от моей службы:
this.myService.getProctResponse.subscribe(response=>{
this.filterOptions[0].label = response.productData[0].key;
this.dfilterOptions[0].value = response.productData[0].name;
this.filterOptions[1].label = response.productData[1].key;
this.filterOptions[1].value = response.dproductData[1].name;
});
Это работает (решение 1), но я должен предоставить индекс каждого значения, чтобы сопоставить его.
Я лучше сделаю что-то вроде этого:
this.productData.map(items=>{
this.filterOptions.value= items.name
this.filterOptions.label = items.key
});
Проблема: последнее значение будет выдаваться как объект, а не массив объектов.
Этот подход работает лучше, чем решение 1 (см. Выше), но есть ли лучший подход, который я мог бы использовать вместо этого?
response.productData.forEach((item, index) => {
let list :FilterModel = {
label:item.key,
value:item.name
};
this.filterOptions.push(list);
});
Моя проблема здесь по-прежнему заключается в том, чтобы сопоставить свойство ключа со свойством метки и свойство имени со свойством значения.
ожидаемая цена / прибыльность:
[{label:'index1',value:'invoice'},
{label:'index2',value:'multi'},
{label:'index3',value:'single'},
{label:'index4',value:'handy'},etc];
filterOptions
- этоclass
, а неinterface
. В противном случае вы можете написатьproductDataArray.map(pd => ({ label: pd.key, value: pd.name }));
, если да, то можете написатьproductDataArray.map(pd => (Object.assign(new FilterOptions(), { label: pd.key, value: pd.name })))
. Но без полного примера трудно быть уверенным, что это именно то, что вам нужно. - person jcalz   schedule 10.05.2020map()
, если вам '... нужно сопоставить':productData.map(({key:label,name:value}) => ({label,value}))
- person Yevgen Gorbunkov   schedule 10.05.2020