通过使用“地图过滤器”与对象数组进行比较来返回字段

Return fields by comparing to array of objects using Map Filter

提问人:Muhammad Nabeel 提问时间:4/17/2019 最后编辑:kukkuzMuhammad Nabeel 更新时间:4/17/2019 访问量:412

问:

尝试返回 的字段 和 另一个字段 ,进行比较。array1array2

我有两个对象数组(client 和 customer)。我想返回客户端 ID 和客户名称,其中客户 ID 等于客户端 ID.为此,我想使用 map,filter,但不知道如何使用下面是我的尝试,

       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 并在客户合同中返回,因为我第一次使用过滤器,所以面临问题。

javascript 数组 reactjs ecmascript-6 es6-map

评论


答:

1赞 kukkuz 4/17/2019 #1

您可以在函数中使用 some() 函数。最后,要获取客户名称,请使用一个函数 - 见下文:filter()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);

评论

0赞 Muhammad Nabeel 4/17/2019
但是,当条件为 true 时,如何在 clientcontract 中返回客户名称和客户端 ID?
0赞 Jaromanda X 4/17/2019
clientcontract将是满足条件的值数组 - 也许您需要交换和围绕addclientthis.state.addclientthis.state.customer
0赞 kukkuz 4/17/2019
@MuhammadNabeel您获得一个筛选的元素列表,客户...addclient
0赞 kukkuz 4/17/2019
正如 JaromandaX 所说,如果您想获得客户,您只需切换 and ...addclientcustomer
0赞 Muhammad Nabeel 4/17/2019
是的,我得到了客户过滤的结果,例如customer-{id:1,name:“abc”,age:4},但是我只想返回从过滤结果和客户端ID中获得的name=“abc”,并将其与clientcontract进行比较,那么我该如何映射过滤器?