[英]Retrieve a value from a Javascript object based on a match with a second attribute value
如果这个问题以前被问过很多次,我很抱歉。 我已经彻底搜索了 Stackoverflow,但一无所获。 可能是我使用了错误的搜索词,或者不明白给出的解决方案如何应用于我的问题。
我有两个 Javascript 对象; pageviews
和enrollments
。 两者都包含在单独的 API 调用中从学习管理系统检索到的数据。 两个对象都包含一个user_id
属性,并且每个 object 中的一些记录将具有相同的user_id
值。 当pageviews.user_id
和enrollments.user_id
的值匹配时,我将如何检索enrollments.name 的值?
var pageviews = [{
id: 1,
page: "Home",
user_id: "100032",
},
{
id: 2,
page: "Assignment 1",
user_id: "123032",
},
{
id: 3,
page: "Discussion 2",
user_id: "147032",
},
];
var enrollments = [{
id: 1,
name: "Amy",
role: "Student",
user_id: "100032",
},
{
id: 2,
name: "Bill",
role: "Teacher",
user_id: "123032",
},
{
id: 3,
name: "Carol",
role: "Student",
user_id: "147032",
},
];
for (var id in pageviews) {
var thisUser = pageviews[id].user_id;
console.log("To match - " + thisUser);
for (var id in enrollments) {
if (enrollments[id].useer_id == thisUser) {
console.log("Returned - " + enrollments[id].nane);
}
}
}
我想你正在寻找这样的东西:
enrollments.forEach(enrollment => {
const pageviewinfo = pageviews.find(pageview => pageview.user_id === enrollment.user_id);
console.log(enrollment.name, pageviewinfo);
});
它遍历注册并查找给定 user_id 的综合浏览量。
祝你好运!
const pageviews = [{ id: 1, page: "Home", user_id: "100032", }, { id: 2, page: "Assignment 1", user_id: "123032", }, { id: 3, page: "Discussion 2", user_id: "147032", }, ]; const enrollments = [{ id: 1, name: "Amy", role: "Student", user_id: "100032", }, { id: 2, name: "Bill", role: "Teacher", user_id: "123032", }, { id: 3, name: "Carol", role: "Student", user_id: "147032", }, ]; enrollments.forEach(enrollment => { const pageviewinfo = pageviews.find(pageview => pageview.user_id === enrollment.user_id); console.log(enrollment.name, pageviewinfo); });
因此,据我了解,您正在尝试获取与每个综合浏览量 user_id 匹配的用户 ID 的注册名称。 如果这就是您要实现的目标,那么下面的代码片段应该可以做到。 祝你好运
var pageviews = [{ id: 1, page: "Home", user_id: "100032", }, { id: 2, page: "Assignment 1", user_id: "123032", }, { id: 3, page: "Discussion 2", user_id: "147032", }, ]; var enrollments = [{ id: 1, name: "Amy", role: "Student", user_id: "100032", }, { id: 2, name: "Bill", role: "Teacher", user_id: "123032", }, { id: 3, name: "Carol", role: "Student", user_id: "147032", }, ]; // loop through the page views pageviews.forEach(pageview => { // then get the names of enrollements that matches the current pageview user_id let enrollmentsNames = enrollments.filter(data => data.user_id === pageview.user_id).map(data => data.name); // if the result is not empty, then log the names of enrollments that has matching user id with the current pageview user_id if (enrollmentsNames.length) console.log(enrollmentsNames) // if it's certain that a pageview won't have more than 1 enrollment then just go ahead and log the first element if (enrollmentsNames.length) console.log(enrollmentsNames[0]) });
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.