gpt4 book ai didi

javascript - 如何在将用户 ID 与仅包含用户 ID 的第二个 JSON 匹配后从 JSON 对象获取用户名字符串

转载 作者:行者123 更新时间:2023-11-30 19:11:01 25 4
gpt4 key购买 nike

我正在尝试遍历 2 个不同的 JSON 对象。

第一个保存包含 orderId userIdproductId 的 ORDERS 数据,如下所示:

[{  
"orderId": 1,
"userId": 1,
"productId": 001
},
{
"orderId": 2,
"userId": 2,
"productId": 001
},
{
"orderId": 3,
"userId": 2,
"productId": 002
},
{
"orderId": 4,
"userId": 2,
"productId": 002
},
{
"orderId": 5,
"userId": 3,
"productId": 003
},
{
"orderId": 6,
"userId": 1,
"productId": 003
},
{
"orderId": 7,
"userId": 1,
"productId": 003
}

]

第二个 JSON 包含这样的用户数据:

[{  
"userId": 1,
"name": "john",
"email": "john@gmail.com"
},
{
"userId": 2,
"name": "mike",
"email": "mike@gmail.com"
},
{
"userId": 3,
"name": "jane",
"email": "jane@gmail.com"
}
]

第三个 JSON 对象包含产品数据。包含在下面的上下文中:

[
{
"productId": 001,
"productName": "square"
},
{
"productId": 002,
"productName": "triangle"
},
{
"productId": 003,
"productName": "hexagon"
}
]

我想做的是比较 USERS 和 ORDERS 对象,并输出所有已购买 HEXAGON 的订单的USER NAME(不是 ID)。

我使用的代码如下:

const getUserNamesFromOrders = (productName) => {
const products = require('./resources/products.json')
for (product of products) {
if (product.productName === productName) {
const productId = product.productId
const orders = require('./resources/orders.json')
const users = require('./resources/users.json')
for (order of orders) {
const userId = order.userId
if (order.productId === productId) {
for (user of users) {
if(user.userId === order.userId) {
const userName = user.name
allUsers.push(userName)
}
}
}

}
}
}
return allUsers
}

getUserNamesFromOrders('hexagon');

以上代码当前输出和数组显示

['约翰','约翰']

什么时候应该显示

['john','jane']

任何帮助将不胜感激。

谢谢

最佳答案

您可以尝试以下方法,而不是 for-of-loops:

allUsers = [...new Set(orders
.filter(o => o.productId === productName)
.map(o => users.find(u => u.userId === o.userId).name))];

首先,我过滤掉所有不包含所需商品的订单,然后我获取所有相关的用户名,最后我通过转换为一个集合并传播它来过滤掉重复项。

关于javascript - 如何在将用户 ID 与仅包含用户 ID 的第二个 JSON 匹配后从 JSON 对象获取用户名字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58476425/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com