我有一个下拉列表,其中包含我通过服务获得的状态列表。在JSON中,我获得了带有id和label的状态列表。对于前者id:NJ,label:New Jersey
。我有来自后端的不同回复,这给了我5个州的身份 -
例如:
"filters": [
{
"name": "listedStates",
"includedCodes": [
"AZ",
"NJ",
"IN",
"OH",
"WI"
]
}
在下拉列表中填充整个美国州的列表,我正在这样迭代 -
this.addressService.getStates().subscribe(
(data) => {
console.log(data);
if (data) {
//filter with filters array
data.states.forEach(i => {
console.log(data.states);
this.newBaseStatesList.push({ 'value': i.id, 'text': i.label });
console.log(this.newBaseStatesList);
});
}
},
(error) => {
//console.log("An error occurred ");
}
);
现在我的下拉列表已经填充了数组中的所有状态项,而我想在filters数组中提到的下拉列表中只显示5个状态。这里的问题是我从后端得到的响应只有ID不是标签,下拉列表应该包含标签值。因此,我必须以某种方式将这些代码映射到状态数组,以便过滤和填充这5个状态。
我的对象是格式 -
{
id:NJ,
label:New Jersey
}
我想检查带有states数组的filters数组中的状态代码并显示相应的标签。现在,整个州都在填充,而不是过滤器数组中提到的5个州。
答案 0 :(得分:0)
您可以使用以下方式实现
this.filters.forEach((filter)=>{
filter.includedCodes.forEach((code)=>{
this.newBaseStatesList.push(_.takeWhile(this.data.states, { 'id': code}))'
});
})
注意:我正在使用 Lodash 。
我不确定您的服务为this.data.states
返回的语法,因此需要根据示例json