Javascript 数组中的对象

Javascript 数组中的对象,javascript,jquery,arrays,Javascript,Jquery,Arrays,我有多个如下所示的对象,我想知道将它们全部放在一个数组中的正确语法是什么。我还想知道如何正确地循环使用所有阵列 var verbMap = [ { infinitive: "gehen", thirdPres: "geht", thirdPast: "ging", aux: "ist", pastPart: "gegangen", english: "go" }, {

我有多个如下所示的对象,我想知道将它们全部放在一个数组中的正确语法是什么。我还想知道如何正确地循环使用所有阵列


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(verbMap中的k).

对于对象文字

循环通过数组的正确方法如下

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];
        }
    }
}
for(var i=0;i
只需将
verbMap
数组放在另一个数组中即可

var verbMaps=[verbMap1,verbMap2…]

要理解的关键是,您的verbMap是一个对象文本数组

for(verbMap中的k).

对于对象文字

循环通过数组的正确方法如下

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];
        }
    }
}
for(var i=0;i
您的数组不包含其他数组。它包含对象。您可以尝试在其中循环

for(var i = 0; i < verbMap.length; i++)
{
   var obj = verbMap[i];
   alert("Object #"+ i " - infinitive: " + obj.infinitive);
}
for(变量i=0;i
您的数组不包含其他数组。它包含对象。您可以尝试在其中循环

for(var i = 0; i < verbMap.length; i++)
{
   var obj = verbMap[i];
   alert("Object #"+ i " - infinitive: " + obj.infinitive);
}
for(变量i=0;i
以下函数输出(可能)作为参数给定的无限数组中的每个值

function printInfiniteArray(value){
    if (value instanceof Array){
        for(i=0;i<value.length;i++){
            printInfiniteArray(value[i]);
        }
    } else {
        console.log(value);
    }
}
函数printInfiniteArray(值){
if(数组的值实例){

对于(i=0;i,以下函数输出作为参数给定的(可能)无限数组中的每个值

function printInfiniteArray(value){
    if (value instanceof Array){
        for(i=0;i<value.length;i++){
            printInfiniteArray(value[i]);
        }
    } else {
        console.log(value);
    }
}
函数printInfiniteArray(值){
if(数组的值实例){

对于(i=0;i,可以像对待任何其他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];
    }
}
for(var i=0;i
不要在…中使用!!!
这不是它的用途。在javascript中,for…In可能会有一些不需要的行为。有关更多详细信息,请参阅。

您可以像对待任何其他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];
    }
}
for(var i=0;i
不要在…中使用!!! 这不是它的用途。在javascript中,for…In可能会有一些不需要的行为。有关更多详细信息,请参阅。

您可以使用循环遍历数组或对象,而无需检查它是哪一个。一个简单的递归函数,在嵌套结构中循环遍历键值对,而不知道确切的深度:

var walk = function(o) {
    $.each(o, function(key, value) {
        if (typeof value == 'object') {
            walk(value);
        } else {
            console.log(key, value);
        }
    });
}
您可以使用循环遍历数组或对象,而不必检查它是哪一个。一个简单的递归函数,用于循环遍历嵌套结构中的键值对,而不知道确切的深度:

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

请注意,这些内部“数组”实际上是对象(
{}
),而不是数组(
[]
)。在JavaScript中,一切都是对象;-)@Zach L:是的,但不是一切都是数组:)对数组使用普通的
循环,对对象使用
循环。在第一次学习JavaScript时,我还混淆了普通对象
{
是一个关联数组(例如在php中),因为您可以使用相同的语法:
someObject[“item”]
。与其将其视为关联数组,不如将其视为哈希表。数组是有序的,而对象属性不是有序的。请注意,这些内部“数组”实际上是对象(
{}
),而不是数组(
[]
)。在JavaScript中,所有的东西都是一个对象;-)@Zach L:是的,但不是所有的东西都是数组:)对数组使用普通的
循环,对对象使用
循环(比如在php中)因为可以使用相同的语法:
someObject[“item”]
。与其将其视为关联数组,不如将其视为哈希表。由于数组是有序的,而对象属性不是有序的,因此它更有意义。在javascript中,不要将for…in与数组一起使用。在javascript中,不要将for…in与数组一起使用。如果我想写一个表,比如:你知道我会怎么做吗@Andrew首先将外部循环更改为使用
var i;..
,如我在回答中所述。如果我想将其写出一个表格,如下所示:你知道我将如何做吗?@Andrew首先将外部循环更改为使用
var i;..