Получить значение из объекта Javascript на основе совпадения со вторым значением атрибута - PullRequest
0 голосов
/ 16 октября 2019

Приношу свои извинения, если этот вопрос задавался много раз раньше. Я тщательно искал Stackoverflow и ничего не нашел. Возможно, я использовал неправильные условия поиска или не понял, каким образом данные решения применимы к моему вопросу.

У меня есть два объекта Javascript;pageviews и enrollments. Оба содержат данные, полученные из системы управления обучением в отдельных вызовах API. Оба объекта содержат атрибут user_id, и некоторые записи в каждом объекте будут иметь одинаковые значения user_id. Как я могу получить значение enrollments.name, когда значения pageviews.user_id и enrollments.user_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",
  },
];

for (var id in pageviews) {
  var thisUser = pageviews[id].user_id;
  console.log("To match - " + thisUser);
  for (var id in enrollments) {
    if (enrollments[id].user_id == thisUser) {
      console.log("Returned - " + enrollments[id].nane);
    }
  }
}

Ответы [ 2 ]

1 голос
/ 16 октября 2019

Итак, насколько я понимаю, вы пытаетесь получить имена зачислений, которые соответствуют идентификатору пользователя для каждого просмотра страницы user_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])
});
0 голосов
/ 16 октября 2019

Я думаю, вы ищете что-то вроде этого:

enrollments.forEach(enrollment => {
  const pageviewinfo = pageviews.find(pageview => pageview.user_id === enrollment.user_id);
  console.log(enrollment.name, pageviewinfo);
});

Он просматривает записи и находит просмотр страницы для данного идентификатора пользователя.

Удачи!

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);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...