遍历obj数组javascript

时间:2020-05-27 20:28:57

标签: javascript arrays loops object

我有一个对象数组,例如(在chrome控制台输出下面。)

[]
0: SRB {codiceSito: "I019GR", isFintoCamino: false, isFintoAlbero: false, regione: "TOSCANA"}
1: SRB {codiceSito: "I374NA", isFintoCamino: true, isFintoAlbero: false, regione: "Campania"}
2: SRB {codiceSito: "I288NA", isFintoCamino: false, isFintoAlbero: false, regione: "Campania"}
3: SRB {codiceSito: "I403NA", isFintoCamino: true, isFintoAlbero: false, regione: "CAMPANIA"}
...

所有这些对象都是使用此构造函数创建的

class SRB {
    constructor(codiceSito, isFintoCamino, isFintoAlbero, regione) {
        this.codiceSito = codiceSito;
        this.isFintoCamino = isFintoCamino
        this.isFintoAlbero = isFintoAlbero
        this.regione = regione
        // this.comune = comune
        // this.versioneModello = versMod
    }
}

,并在创建它们各自之后,将其推入一个空数组list_SRB = []

现在,如果我在Chrome控制台中输入 以list_SRB[2]为例,我得到了预期的结果:

SRB {codiceSito: "I288NA", isFintoCamino: false, isFintoAlbero: false, regione: "Campania"}

相反,如果我使用for循环遍历它,则会得到未定义的...:/

因此,我想知道如何遍历此数组并获取每个属性-值,以便将它们“打印”在HTML表格上。

每一个线索都比不受欢迎:D

很抱歉,我之前没有发布所有代码,请在下面进行检查:

function handleFileSelect(evt) {

    // SRB constructor
    class SRB {
        constructor(codiceSito, isFintoCamino, isFintoAlbero, regione) {
            this.codiceSito = codiceSito;
            this.isFintoCamino = isFintoCamino
            this.isFintoAlbero = isFintoAlbero
            this.regione = regione
            // this.comune = comune
            // this.versioneModello = versMod
        }
    }

    var files = evt.target.files

    // loop through all uploaded files (TXT-like files)
    for (var i = 0; i < files.length; i++) {
        var file = files[i]
        var fileName = file.name

        if (fileName.endsWith(".ifc")) {

            list_fileNames.push(file.name)
            list_SRB_count++

            // read the IFC as txt file
            var reader = new FileReader()
            reader.onload = function (e) {
                var contents = e.target.result

                // create regex searches for all data
                var regEx_codiceSito = /(codice sito',\$,IFCTEXT\('([a-zA-Z\d]{6}))/g
                var codiceSito = regEx_codiceSito.exec(contents)
                if (codiceSito) {
                    codiceSito = codiceSito[2]
                } else {
                    codiceSito = "dato non disponibile"
                } 

                var regEx_fintoCamino = /resina/gi
                var isFintoCamino = regEx_fintoCamino.exec(contents)
                if (isFintoCamino) {
                    isFintoCamino = true
                    list_SRB_fintoCamino.push(codiceSito)
                } else {
                    isFintoCamino = false
                }

                var regEx_fintoAlbero = /((IFCTEXT\('vedetaz)|(IFCTEXT\('vegetaz))/gi
                var isFintoAlbero = regEx_fintoAlbero.exec(contents)
                if (isFintoAlbero) {
                    isFintoAlbero = true
                    list_SRB_fintoAlbero.push(codiceSito)
                } else {
                    isFintoAlbero = false
                }

                var regEx_regione = /(regione',\$,IFCTEXT\('([a-zA-Z]{2,25}))/g
                var regione = regEx_regione.exec(contents)
                if (regione) {
                    regione = regione[2]
                } else {
                    regione = "dato non disponibile"
                }

                // create the SRB obj
                var thisSRB = new SRB(codiceSito, isFintoCamino, isFintoAlbero, regione)

                // push the obj to the SRB list
                list_SRB.push(thisSRB)

                // now loop through the SRB list and log the results
                for (var n = 0; n < list_SRB_count; n++) {
                    console.log(SRB) // logs correctly the entire list 
                    console.log(SRB[n]) // logs undefined
                }

            }
            reader.readAsText(file)

            countFile_Accepted++

        } else {
            countFile_NotAccepted++
        }
    }
}

0 个答案:

没有答案