Jak deklarovat pole v JS (jako bych to udělal v PHP)?

Ahoj, pokouším se vytvořit vnořené pole v 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",
                                ),
                    );

Ladicí program Chrome mi říká ), na konci prvního vnořeného pole je „Neočekávaný token“

Odpověď

Z vašeho kódu to vypadá, že se v JavaScriptu pokoušíte použít pole ve stylu PHP. Pole JavaScriptu nefungují jako pole PHP. Zde je něco, co bude pravděpodobně fungovat:

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',
  },
];

Abychom to vysvětlili trochu dále, v JavaScriptu vytvoříte nové pole, jako je toto:

const myArray = [ 5, 10, 15 ];

Hranaté závorky ([] ) označují začátek a konec pole a čárky (, ) oddělte prvky pole. Pak bychom pro přístup k prvkům udělali něco takového:

alert( myArray[0] );

…což by dalo 5 (první neboli „0.“ prvek v poli).

Nyní, zatímco PHP má asociativní pole (array('a' => 1, ...) ), v JavaScriptu není žádné „asociativní pole“; spíše použijete „objektový literál“, jako je tento:

const myObject = { a: 5, b: 10, c: 15 };

Tím se vytvoří nový objekt s vlastnostmi (můžete si je představit jako klíče) s názvem a , b a c . Existují dva způsoby přístupu ke službě:

alert( myObject['b'] );
alert( myObject.b );

V obou případech 10 (hodnota, kterou jsme přiřadili vlastnosti b ) by bylo dáno.

Nyní zpět k vašemu cvičení. Uvidíte, že jsme zde vytvořili pole ([] ) a dal mu tři prvky, z nichž každý je objektový literál ({} ). Chcete-li získat přístup, řekněme user vlastnosti prvního prvku bychom udělali toto:

alert( lines[0].user ); // => "User1"

Upravit: Pokud chcete pojmenovat prvky vnějšího pole, musí být změněno na objektový literál a může být vnořeno takto:

const lines = {
  one: {
    time: '10:00:00',
    user: 'User1',
    content: 'Line1',
  },
  two: {
    // ...
  },
  // ...
};

Položky jsem pojmenoval one , two , atd. kvůli přehlednosti, ale můžete použít libovolné hodnoty. Pokud však zamýšlíte používat číselné názvy vlastností — 0 , 1 , 2 , atd. – stejně jako ve vašem příkladu kódu můžete místo objektu použít jiné pole. Na rozdíl od PHP JavaScript neumožňuje „mezery“ v poli – budou vyplněny undefined . Například:

const myArr = [1, 2];
myArr[5] = 3;
alert( myArr ); // => [ 1, 2, undefined, undefined, undefined, 3 ];