Arrays 使用一个属性对数组进行Angular2筛选并显示相应的值

Arrays 使用一个属性对数组进行Angular2筛选并显示相应的值,arrays,angular,Arrays,Angular,我有一个下拉列表,其中列出了我通过服务获得的状态。在JSON中,我得到了带有id和标签的状态列表。例如,id:NJ,标签:新泽西。我有一个来自后端的不同响应,它给了我5个状态的id- 例: 为了填充下拉列表中整个美国州的列表,我像这样迭代- this.addressService.getStates().subscribe( (data) => { console.log(data); if (data) {

我有一个下拉列表,其中列出了我通过服务获得的状态。在JSON中,我得到了带有id和标签的状态列表。例如,id:NJ,标签:新泽西。我有一个来自后端的不同响应,它给了我5个状态的id- 例:

为了填充下拉列表中整个美国州的列表,我像这样迭代-

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而不是标签,下拉列表应该包含标签值。因此,我必须以某种方式将这些代码映射到states数组中,以使这5个状态得到过滤和填充

我的对象是格式化的-

{
    id:NJ,
    label:New Jersey
}

我想用状态数组检查过滤器数组中的状态代码,并显示相应的标签。现在,将填充整个状态,而不是过滤器阵列中提到的5个状态。

您可以使用以下方法实现

this.filters.forEach((filter)=>{
    filter.includedCodes.forEach((code)=>{
            this.newBaseStatesList.push(_.takeWhile(this.data.states, { 'id': code}))'
            });
    })
注意:我使用的是Lodash
我不确定您的服务为
this.data.states
返回的语法,因此需要根据示例json对其进行处理您是如何解析从服务返回的对象的状态的。this.data.states返回具有每个状态的id和标签属性的对象的数量。您能用angular2方式更新您的答案吗。
this.filters.forEach((filter)=>{
    filter.includedCodes.forEach((code)=>{
            this.newBaseStatesList.push(_.takeWhile(this.data.states, { 'id': code}))'
            });
    })