簡體   English   中英

數組中的對象

[英]Objects within an Array

我有多個對象,例如下面的對象,我想知道將它們全部放在一個數組中的正確語法是什么。 我也想知道如何正確循環遍歷所有數組。


var verbMap = [
    {
        infinitive: "gehen",
        thirdPres: "geht",
        thirdPast: "ging",
        aux: "ist",
        pastPart: "gegangen",
        english: "go"
    },
    {
        infinitive: "gelingen",
        thirdPres: "gelingt",
        thirdPast: "gelang",
        aux: "ist",
        pastPart: "gelungen",
        english: "succeed"
    }
];

我知道循環遍歷上述數組的正確方法是:


for(v in verbMap){
    for(p in verbMap[v]){
    }
}

如果我想遍歷包含多個數組的更大數組,例如verbMap ,那么正確的方法是什么?

只需將verbMap數組放在另一個數組中即可。

var verbMaps = [verbMap1, verbMap2...]

要理解的關鍵是,您的verbMap是對象文字的數組。 只用

for (k in verbMap)...

用於對象文字。

遍歷數組的正確方法是

for (var i = 0; i < verbMaps.length; i++) {
    var currentVerbMap = verbMaps[i];
    for (var j = 0; j < currentVerbMap.length; j++) {
        var currentHash = currentVerbMap[j];
        for (var k in currentHash) {
           console.log(k, currentHash[k];
        }
    }
}

以下函數從(可能)作為參數給出的無限數組中輸出每個值。

function printInfiniteArray(value){
    if (value instanceof Array){
        for(i=0;i<value.length;i++){
            printInfiniteArray(value[i]);
        }
    } else {
        console.log(value);
    }
}

編輯的代碼。 謝謝jtfairbank

您的陣列不包含其他陣列。 它包含對象。 您可以嘗試使其循環。

for(var i = 0; i < verbMap.length; i++)
{
   var obj = verbMap[i];
   alert("Object #"+ i " - infinitive: " + obj.infinitive);
}

您將像對待其他任何JavaScript對象一樣對待數組。

var arrayOfArrays = [];
var array1 = ["cows", "horses", "chicken"];
var array2 = ["moo", "neigh", "cock-adoodle-doo"];

arrayOfArrays[0] = array1;
arrayOfArrays[1] = array2;

您還可以使用javascript的文字表示法創建一個多維數組:

var arrayOfArrays = [ ["meat", "veggies"], ["mmmm!", "yuck!"] ];

要遍歷數組數組,您需要使用嵌套的for循環,如下所示:

for (var i = 0; i < arrayOfArrays.length; i++) {
    var myArray = arrayOfArrays[i];
    for (var j = 0; j < myArray.length; j++) {
        var myData = myArray[0]; // = arrayOfArrays[0][0];
    }
}

請勿用於... !!! 那不是它的目的。 在javascript中,For ... in可能會有一些有害行為。 請參閱為什么在數組迭代中使用“ for ... in”是個壞主意? 有關更多詳細信息。

您可以使用jQuery.each遍歷數組或對象,而不必檢查它是哪一個。 一個簡單的遞歸函數,可在不知道確切深度的情況下在嵌套結構中循環鍵值對:

var walk = function(o) {
    $.each(o, function(key, value) {
        if (typeof value == 'object') {
            walk(value);
        } else {
            console.log(key, value);
        }
    });
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM