Есть ли способ итерации Array (), имеющие строковые ключи в качестве индекса в Javascript - PullRequest
0 голосов
/ 07 января 2019

у меня есть код, где я создаю двумерный массив с помощью new Array (); Вот мой код, где я получаю некоторые значения из некоторых API REST и манипулирую такими значениями, как показано в приведенном ниже коде

Я пытался перебрать созданный мной объект, используя доступную справку из переполнения стека, для задач, которые ранее были опубликованы другими пользователями, т.е. пытаться перебрать массив с парами ключ-значение, используя цикл foreach или используя синтаксис ключа в объекте. с циклом For.

    var CCTVCounterDictionary = new Array();
    var InitCCTVCounter = function (type, zoneName, quantityCCTV) {
        if (CCTVCounterDictionary[type] == undefined) {
            CCTVCounterDictionary[type] = new Array();
            if (CCTVCounterDictionary[type][zoneName] == undefined) {
                CCTVCounterDictionary[type][zoneName] = new CCTVCounter(type, zoneName, 0);
                CCTVCounterDictionary[type][zoneName].Increment(quantityCCTV);
            }
        }
        else if (CCTVCounterDictionary[type][zoneName] == undefined) {
            CCTVCounterDictionary[type][zoneName] = new CCTVCounter(type, zoneName, 0);
            CCTVCounterDictionary[type][zoneName].Increment(quantityCCTV);
        }
        else {
            CCTVCounterDictionary[type][zoneName].Increment(quantityCCTV);
        }
    };

и вот мой класс js, который я использую для вызова функции Increment для объекта CCTVCounter, который присваивается строковому индексу каждого второго измерения массива

    function CCTVCounter(type, zon, counter) {
        this.CCTVType = type;
        this.ZoneName = zon;
        this.CCTVCount = counter;
    }
    CCTVCounter.prototype.Increment = function (incrementBy) {
        if (incrementBy == undefined)
            this.CCTVCount++;
        else
            this.CCTVCount += parseInt(incrementBy);
    }

проблема с этим подходом состоит в том, что длина моего массива остается равной 0, и если я пытаюсь выполнить итерацию массива с помощью foreach, кажется, что он не находит ключ в CCTVCounterDictionary с циклом foreach или для синтаксиса цикла.

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

Ниже я включаю журнал для того, как вывод выводится кодом, который создает двумерный массив

    SmartEnforcement.js: 202[] Banjir: Array(0) undefined: CCTVCounter {
        CCTVType: "Banjir",
        ZoneName: undefined,
        CCTVCount: 264
    }
    length: 0 __proto__: Array(0) Cadangan: Array(0) undefined: CCTVCounter {
        CCTVType: "Cadangan",
        ZoneName: undefined,
        CCTVCount: 26
    }
    length: 0 __proto__: Array(0) Sediada: Array(0) PJS: CCTVCounter {
        CCTVType: "Sediada",
        ZoneName: "PJS",
        CCTVCount: 368
    }
    PJU: CCTVCounter {
        CCTVType: "Sediada",
        ZoneName: "PJU",
        CCTVCount: 981
    }
    SEKSYEN: CCTVCounter {
        CCTVType: "Sediada",
        ZoneName: "SEKSYEN",
        CCTVCount: 504
    }
    SS: CCTVCounter {
        CCTVType: "Sediada",
        ZoneName: "SS",
        CCTVCount: 816
    }
    length: 0 __proto__: Array(0) length: 0 __proto__: Array(0)

Вот как я вызываю свою основную функцию для вызова InitCCTVCounter

    InitCCTVCounter(marker.Type, f.attributes.ZON, marker.TotalCCTVS);

Ответы [ 2 ]

0 голосов
/ 07 января 2019

Думаю, вы усложнили свою логику для построения 2d массива. Я бы предложил использовать foreach на ваших объектах.

Для итерации вашего объекта используйте его, как показано ниже

Object.keys(yourObject).forEach(function(x){
    // Your code to create array  
});

Построить массив, используя CCTVCounterDictionary.push .

0 голосов
/ 07 января 2019

То, что вы создали, - это не массив, а объект jSon. Обрабатывая его ключи с помощью Object.keys https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...