Поиск значений в многомерном массиве - AHK - PullRequest
0 голосов
/ 28 сентября 2019

Функция, над которой я работаю, это анализ файла CSV, извлечение значений полей и добавление их в новый массив.Данные - имена игроков, убийства и смерти с сервера онлайн-игр.

Массив является многомерным и структурированным [[Имя игрока1, количество убийств, количество смертей], [Имя игрока2, количество убийств, #of Deaths] и т. д.]

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

Я использую скрипт HasVal, подробно здесь , однако, он не работает с моим многомерным массивом.

Я также создалальтернативный метод цикла, который, похоже, тоже не работает.

arrVal, pName и playerDate и все они определены как глобальные переменные.

HasVal: 
{
    arrVal := ""
    If !(IsObject(playerData)) || (playerData.Length() = 0)
    {
        ;MsgBox, Array is empty or doesnt exist!          ;------------WORKING 
        arrVal := 0              
        Return
    }

    ;------- NOT WORKING START NOT WORKING START ------------ 
    ; ATTEMPT #2
    Loop, pCount
    {
        k := 1
        MsgBox % playerData[k][1]
        If (playerData[k][1] = pName)
            arrVal := k
            Return
        k++
    }

    /*
    ; ATTEMPT #1
    For i, v in playerData[i][1]
        If (v = pname)
        {
            MsgBox, %pName% found in Database at key %i%
            arrVal := i              
            Return
        }
    ;------- NOT WORKING END NOT WORKING END ------------ 
        */
    If (arrVal = "")
    {
        MsgBox, %pName% NOT found in Datbase!          ;------------WORKING 
        arrVal := X                       
        Return
    }
}

Ни For-Loop, ни Loop /Если кажется, что методы работают, и при каждом запуске сценария, если Player (pName) уже был добавлен в массив (playerData), он не может найти его и возвращается к последнему аргументу - Player не найден в базах данныхе, и добавляет новую запись, создавая дубликаты записей.

Идея состоит в том, что скрипт должен найти любые имена, уже находящиеся в базе данных, и вернуть его ключ, чтобы я мог затем изменить количество убийств / смертей, связанных с этим игроком.

Заранее спасибо, действительноизо всех сил пытаясь свести мою голову вокруг многомерных массивов.

...