Проверьте, равны ли переменные друг другу - PullRequest
0 голосов
/ 12 апреля 2020

Мне было интересно, как вы можете проверить, равны ли переменные друг другу. У меня есть около 10 переменных, и я хочу проверить, равны ли некоторые из них друг другу, и если они есть, они должны быть в своем собственном массиве

const user1TeamID = 2
const user2TeamID = 4
const user3TeamID = 2
const user4TeamID = 3
const user5TeamID = 1
const user6TeamID = 3
const user7TeamID = 4 ... so on

РЕДАКТИРОВАТЬ:

Так что я у меня есть 10 пользователей, у которых есть команда, и я хочу отфильтровать всех пользователей по идентификатору их команды, поэтому мой вывод - это массив

Как я могу это сделать?

Ответы [ 3 ]

0 голосов
/ 12 апреля 2020

Прежде всего, вы должны узнать о массивах и объектах в javascript, есть множество вещей, которые вы можете сделать с ними, и они облегчают процесс от API до фронта

на вашем месте Я сделаю так:

1-й - создайте объект, содержащий все ваши переменные (пользователи)

2-й - получите все уникальные идентификаторы team (идентификаторы)

3-й - сгруппируйте пользователи в команде

что-то в этом роде


//those are the users
let users = [
    {
        userID: 1,
        teamID: 2
    },
    {
        userID: 2,
        teamID: 4
    },
    {
        userID: 3,
        teamID: 2
    },
    {
        userID: 4,
        teamID: 3
    },
    {
        userID: 5,
        teamID: 1
    },
    {
        userID: 6,
        teamID: 3
    },
    {
        userID: 7,
        teamID: 4
    },
]

//those are the teamListId
let teamListId = [...new Set(users.map(user => user.teamID))]

//grouped users by team
teamListId.map(teamID => ({
    teamID,
    users: users.filter(user => user.teamID == teamID).map(el => el.userID)
})
0 голосов
/ 12 апреля 2020

Это может быть просто следующим образом:

const __get = (name) => { return eval(name) };

const idList = {};

for (let i = 1; i <= 10; i++) {
    const name = `user${i}TeamID`, id = __get(name);
    if (idList[id] === undefined) idList[id] = [];
    idList[id].push(name);
}

console.log(idList);

для вывода типа массива:

const __get = (name) => { return eval(name) };

const idxList = {}, idArray = [];

for (let i = 1; i <= 10; i++) {
    const name = `user${i}TeamID`, id = __get(name), index = idArray.length-1;
    if (idxList[id]) {
        index = idxList[id];
        idArray[index][id].push(name);
    } else {
        idxList[id] = ++index;
        idArray.push({});
        idArray[index][id] = [name];
    }
}

console.log(idArray);
0 голосов
/ 12 апреля 2020

Я думаю, вы должны изменить свою декларацию. Вместо того, чтобы хранить teamID в переменной с префиксом userID, вы должны использовать массив объектов для хранения ваших данных. Вы можете следовать этой структуре.

const teams = [
  {
    teamID: 1,
    users: [1, 2, 4]
  },
  {
    teamID: 2,
    users: [3, 5, 7]
  },
  {
    teamID: 3,
    users: [6, 9]
  },
  ...
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...