通过使用 Map Filter 与对象数组进行比较来返回字段
Posted
技术标签:
【中文标题】通过使用 Map Filter 与对象数组进行比较来返回字段【英文标题】:Return fields by comparing to array of objects using Map Filter 【发布时间】:2019-09-07 08:15:19 【问题描述】:尝试返回array1
的字段和array2
的另一个字段,进行比较。
我有两个对象数组(客户和客户)。我想返回客户 ID 和客户名称,其中客户 ID 等于客户 ID。为此,我想使用地图、过滤器,但不知道如何使用下面是我的尝试,
let clientcontract=this.state.addclient.filter(client=>
return(
this.state.customer.filter(cust=>
return (
cust.id===client.id // comparing customer and client id
)
)
)
);
这种方法用于获取客户 ID 和客户 ID 相同但不知道如何获取客户名称和客户 ID 并在客户合同中返回的字段,因为我第一次使用过滤器所以面临问题在里面。
【问题讨论】:
【参考方案1】:您可以在filter()
函数中使用some()
函数。最后要获得客户名称,请使用map()
函数 - 见下文:
let clientcontract=this.state.customer.filter(cust =>
return this.state.addclient.some(client =>
return cust.id === client.id // comparing customer and client id
);
).map(cust => cust.name);
【讨论】:
但是,当条件为真时,如何在 clientcontract 中返回客户名称和客户 ID?clientcontract
将是来自 addclient
的值数组,然后满足条件 - 也许您需要交换 this.state.addclient
和 this.state.customer
左右
@MuhammadNabeel 你会得到一个过滤的addclient
元素列表,是客户...
正如 JaromandaX 所说,如果你想获得客户,你可以切换 addclient
和 customer
...
是的,我得到了客户过滤结果,例如 customer-id:1,name:"abc",age:4,但我只想返回从过滤结果中获得的 name="abc" 和将其与客户端合同进行比较的客户端 ID,那么我该如何映射过滤器?以上是关于通过使用 Map Filter 与对象数组进行比较来返回字段的主要内容,如果未能解决你的问题,请参考以下文章
JS之JQ的map/reduce/filter/sort/reverse