繁体   English   中英

根据与第二个属性值的匹配,从 Javascript object 中检索一个值

[英]Retrieve a value from a Javascript object based on a match with a second attribute value

如果这个问题以前被问过很多次,我很抱歉。 我已经彻底搜索了 Stackoverflow,但一无所获。 可能是我使用了错误的搜索词,或者不明白给出的解决方案如何应用于我的问题。

我有两个 Javascript 对象; pageviewsenrollments 两者都包含在单独的 API 调用中从学习管理系统检索到的数据。 两个对象都包含一个user_id属性,并且每个 object 中的一些记录将具有相同的user_id值。 pageviews.user_idenrollments.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM