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

Поддержка
  • Как удалить дубликаты в разных списках не теряя связи между строками, с учетом разного количества дубликатов?
    Пример
    ID
    1
    2
    3
    4
    Количество зрителей
    10
    10
    2
    3
    Если для каждого списка применить удаление дубликатов, выйдет
    ID
    1
    2
    3
    4
    Количество зрителей
    10
    2
    3
    То есть теряется соответствие строки
    я ручками это очень устал делать в excel, помогите0)

  • @nazar21015 said in Как удалить дубликаты в разных списках не теряя связи между строками, с учетом разного количества дубликатов?:

    Как удалить дубликаты в разных списках не теряя связи между строками, с учетом разного количества дубликатов?
    Пример
    ID
    1
    2
    3
    4
    Количество зрителей
    10
    10
    2
    3
    Если для каждого списка применить удаление дубликатов, выйдет
    ID
    1
    2
    3
    4
    Количество зрителей
    10
    2
    3
    То есть теряется соответствие строки
    я ручками это очень устал делать в excel, помогите0)

    О какой связи между строками вы говорите?

  • Скажем, как в двух списках есть данные связанные между собой, но хранятся они в разных списках, так как там разное регуляторное выражение. 10 зрителей относятся, связанны с индексом 0. У ID [0]1 было 10 зрителей[0]10. Если по отдельно пропарсить дубликаты строк, эта построчная/поиндексная связь будет нарушена, что значит если обращаться к ресурсу после обычного удаления дубликатов, выйдет, что для [1]ID 2 будет как бы присвоено [1]3 зрителя, вместо [1]10
    Login
    [0]aa
    [1]bb
    [2]cc
    [3]bb
    [4]zz
    [5]zz
    ID
    [0]1
    [1]2
    [2]3
    [3]4
    [4]5
    [5]5
    Количество зрителей
    [0]10
    [1]10
    [2]3
    [3]4
    [4]4
    [5]4
    выходной результат после удаления дубликатов
    Login
    [0]aa
    [1]bb
    [2]cc
    [3]bb
    [4]zz
    ID
    [0]1
    [1]2
    [2]3
    [3]4
    [4]5
    Количество зрителей
    [0]10
    [1]3
    [2]4

  • Хотелось, чтобы было так на выходе
    Login
    [0]aa
    [1]bb
    [2]cc
    [3]bb
    [4]zz
    ID
    [0]1
    [1]2
    [2]3
    [3]4
    [4]5
    Количество зрителей
    [0]10
    [1]10
    [2]3
    [3]4
    [4]4

  • CHATgpt чето мне нафундюрил но неворк))
    // Получение данных из трех списков
    var logins = project.getColumn("Login");
    var ids = project.getColumn("ID");
    var viewerCounts = project.getColumn("Количество зрителей");

    // Создание объекта для хранения уникальных значений ID и соответствующих им зрителей
    var idMap = {};

    // Заполнение объекта данными из списков
    for (var i = 0; i < ids.length; i++) {
    var id = ids[i];
    var viewerCount = viewerCounts[i];

    if (!idMap[id]) {
        idMap[id] = viewerCount;
    } else {
        idMap[id] += viewerCount;
    }
    

    }

    // Создание новых списков для результатов
    var newLogins = [];
    var newIds = [];
    var newViewerCounts = [];

    // Заполнение новых списков на основе данных из объекта idMap
    for (var id in idMap) {
    newLogins.push(logins[id]);
    newIds.push(id);
    newViewerCounts.push(idMap[id]);
    }

    // Запись результатов в проект
    project.setColumn("Login", newLogins);
    project.setColumn("ID", newIds);
    project.setColumn("Количество зрителей", newViewerCounts);

  • Кому может помочь под бас доделал во, просто для себя меняете не там ваще шляпа вышла)
    // Получение данных из трех списков
    var logins = [[LOGINS]];
    var channelIds = [[CHANELID]];
    var viewerCounts = [[VIEWERS]];

    // Создание объекта для хранения уникальных значений Channel ID и соответствующих им зрителей
    var channelIdMap = {};

    // Заполнение объекта данными из списков
    for (var i = 0; i < channelIds.length; i++) {
    var channelId = channelIds[i];
    var viewerCount = viewerCounts[i];

    if (!channelIdMap[channelId]) {
        channelIdMap[channelId] = viewerCount;
    } else {
        channelIdMap[channelId] += viewerCount;
    }
    

    }

    // Создание новых списков для результатов
    var newLogins = [];
    var newChannelIds = [];
    var newViewerCounts = [];

    // Заполнение новых списков на основе данных из объекта channelIdMap
    for (var channelId in channelIdMap) {
    newLogins.push(logins[channelId]);
    newChannelIds.push(channelId);
    newViewerCounts.push(channelIdMap[channelId]);
    }

    // Обновление столбцов в проекте с новыми данными
    [[LOGINS]] =newLogins;
    [[CHANELID]] = newChannelIds;
    [[VIEWERS]] = newViewerCounts;

  • Вам в принципе не нужны списки, а нужен объект. Что бы обращаться к данным можно было не по индексу а по ключу