JS嵌套数组

Die*_*l11 5 javascript arrays

嘿,我试图在JS中创建一个嵌套数组

    var lines = new Array(
                    "0"= new Array(
                                0['time']="10:00:00",
                                0['user']="User1",
                                0['content']="Line1",
                                ),
                    "1"= new Array(
                                1['time']="20:00:00",
                                1['user']="User2",
                                1['content']="Line2",
                                ),
                    "2"= new Array(
                                2['time']="30:00:00",
                                2['user']="User3",
                                2['content']="Line3",
                                ),
                    );
Run Code Online (Sandbox Code Playgroud)

Chrome的调试器告诉我,在第一个嵌套数组的末尾是"意外的令牌"

Jor*_*ing 31

从您的代码看起来您​​正在尝试在JavaScript中使用PHP样式的数组.JavaScript数组不像PHP数组那样工作.这是更有可能工作的东西:

const lines = [
  { time: '10:00:00',
    user: 'User1',
    content: 'Line1',
  },
  { time: '20:00:00',
    user: 'User2',
    content: 'Line3',
  },
  { time: '30:00:00',
    user: 'User3',
    content: 'Line3',
  },
];
Run Code Online (Sandbox Code Playgroud)

为了进一步解释一个小问题,在JavaScript中你创建一个像这样的新数组:

const myArray = [ 5, 10, 15 ];
Run Code Online (Sandbox Code Playgroud)

方括号([])表示数组的开头和结尾,逗号()表示数组,的元素.然后,要访问元素,我们会这样做:

alert( myArray[0] );
Run Code Online (Sandbox Code Playgroud)

...将给出5(数组中的第一个或"第0个"元素).

现在,虽然PHP有关联数组(array('a' => 1, ...)),但在JavaScript中没有"关联数组"; 相反,你使用"对象文字",像这样:

const myObject = { a: 5, b: 10, c: 15 };
Run Code Online (Sandbox Code Playgroud)

这将创建与属性的新对象(你可以把它们想象成键)命名的a,bc.有两种方法可以访问属性:

alert( myObject['b'] );
alert( myObject.b );
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,都会给出10(我们赋予财产的价值b).

现在回到你的练习.你会看到我们在这里创建了一个array([])并给它三个元素,每个元素都是一个对象文字({}).要访问user第一个元素的属性,我们会这样做:

alert( lines[0].user ); // => "User1"
Run Code Online (Sandbox Code Playgroud)

编辑:如果要命名外部数组的元素,则必须将其更改为对象文字,并且可以嵌套,如下所示:

const lines = {
  one: {
    time: '10:00:00',
    user: 'User1',
    content: 'Line1',
  },
  two: {
    // ...
  },
  // ...
};
Run Code Online (Sandbox Code Playgroud)

我命名的项目one,two等,为清晰起见,但你可以使用任何值,您请.但是,如果您打算在示例代码中使用数字属性名称0,1- 2,等等,您也可以使用其他数组而不是对象.与PHP不同,JavaScript不允许在数组中使用"间隙" - 它们将被填充undefined.例如:

const myArr = [1, 2];
myArr[5] = 3;
alert( myArr ); // => [ 1, 2, undefined, undefined, undefined, 3 ];
Run Code Online (Sandbox Code Playgroud)