I want to make a website about a cinema. On one page I want to show a schedule. I want to make a list where you can see the dates and if you click on it, you see the movies that play on that day.
This is my json file with the data:
{
"complex": "Budascoop",
"location": {
"City": "Kortrijk",
"Street": "Dam"
},
"schedule": [
{
"day": "Maandag",
"date": "22/05/2017",
"movies": [
{
"title": "I Am Not Your Negro",
"description": "In deze Belgische coproductie vertrekt Raoul Peck van een onafgewerkte roman van de Afro-Amerikaanse schrijver James Baldwin voor een reis door de zwarte geschiedenis die de Burgerrechtenbeweging uit de jaren zestig verbindt met het huidige #BlackLivesMatter. De tekst, geschreven in 1979, is helaas nog altijd heel actueel en bespreekt een diep geworteld racisme. De film is een treffend betoog op basis van archiefbeelden, filmfragmenten en actuele nieuwsbeelden die aan elkaar gepraat worden door de bezwerende stem van Samuel L. Jackson.",
"img": "negro.jpg",
"room": 1,
"screenings": [
"20:25"
],
"kids":false
},
{
"title": "Lady MacBeth",
"description": "De jonge Katherine leeft Northumberland in 1865. Ze is er gevangene in eigen huis en wordt er door haar sadistische echtgenoot en diens autoritaire vader tot op het bot vernederd. Leven in zo’n liefdeloze wereld moet in deze krachtige kostuumfilm wel tot excessen leiden. Wanneer Katherine een allesverzengende relatie aanknoopt met een knecht gaat het mis. Een indrukwekkende speelfilmdebuut van theater- en operaregisseur William Oldroyd.",
"img": "macbeth.jpg",
"room": 2,
"screenings": [
"20:15"
],
"kids":false
},
{
"title": "Tarde para la Ira",
"description": "Na acht jaar in de gevangenis als gevolg van een misgelopen sieradenroof wil Curro maar één ding: een nieuw leven beginnen met zijn familie. Zijn komst leidt echter tot spanningen bij zijn broer en diens vriendin, die een rustig leventje leiden. Bovendien verandert de ontmoeting met Joseph, een mysterieuze vreemdeling, zijn plannen. Hij komt terecht in een onomkeerbare, donkere reis terug naar het verleden, vol wraak. Deze debuutfilm van acteur Raúl Arévalo won recent 4 Goyas (de Spaanse variant van de Oscar) waaronder die voor Beste Film.",
"room": 3,
"img": "tarde.jpg",
"screenings": [
"20:15"
],
"kids":false
}
]
},
{
"day": "Dinsdag",
"date": "23/05/2017",
"movies": [
{
"title": "Django",
"description": "De virtuoze gitarist Django Reinhardt, geboren in een Henegouws dorp, was een Roma. Op het moment dat hij in Parijs concertzalen laat vollopen, vallen de Duitsers Frankrijk binnen. De film focust op de oorlogsjaren van de virtuoze gitarist en zoomt in op zijn poging om naar Zwitserland te vluchten. De aandacht ligt op het droevige lot van de Roma-zigeuners, een bevolkingsgroep die door de nazi’s vervolgd werden, tijdens die oorlogsjaren. De aanstekelijke muziek wordt vertolkt door het Rosenberg Trio.",
"room": 1,
"img": "django.jpg",
"screenings": [
"20:15"
],
"kids":false
},
{
"title": "March of the Penguins 2",
"description": "In March of The Penguins 2 keert regisseur Luc Jacquet terug met een even verbluffend vervolg, en voert de kijker met behulp van drones en onderwatercamera’s mee naar onherbergzame plekken op Antarctica. Ditmaal volgen we een jonge pinguïn die op het punt staat zijn eerste grote reis te maken, vol gevaar en obstakels. Het vervolgverhaal vertelt de lotsbestemming van één pinguïn, wiens krachtige en mysterieuze instincten hem in staat stellen om te overleven.",
"room": 3,
"img": "march.jpg",
"screenings": [
"20:15"
],
"kids":true
},
{
"title": "Their Finest",
"description": "In deze charmante komedie staan twee scenarioschrijvers centraal. Tijdens WOII krijgen ze de opdracht een fictiefilm te maken die het moreel van de Britten moet opschroeven. Tijdens het schrijversproces krijgen ze voortdurend nieuwe richtlijnen van het ministerie van Oorlog om het script aan te passen. Om uiteindelijk de Amerikanen ook over de streep te trekken om deel te nemen aan de oorlog moeten ze de hoofdrol herschrijven met een Amerikaanse held. Een puike verzameling Britse acteurs zijn de kers op de verrukkelijke taart.",
"room": 3,
"img": "finest.jpg",
"screenings": [
"20:15"
],
"kids":false
}
]
},
{
"day": "Woensdag",
"date": "24/05/2017",
"movies": [
{
"title": "Dries",
"description": "DRIES brengt een intiem en fascinerend portret van de Vlaamse modeontwerper Dries Van Noten wiens stijl wordt gekenmerkt door warme kleuren, exquise prints en rijke borduursels. Als één van de laatste onafhankelijke modeontwerpers bekleedt hij een unieke positie in het modelandschap. Hij staat al 25 jaar aan de top en heel wat van zijn collecties zijn iconisch te noemen. Van Noten zelf is bekend om zijn soberheid en zijn bescheidenheid, je zal hem niet vaak zien op modefeestjes en hij geeft amper interviews. Voor het eerst laat hij een camera toe in zijn professionele en persoonlijke leven; regisseur Reiner Holzemer volgde Dries Van Noten een jaar lang langsheen de creatie van 4 collecties.",
"room": 1,
"img": "dries.jpg",
"screenings": [
"18:00"
],
"kids":false
},
{
"title": "The Sense of an Ending",
"description": "Tony Webster, een gescheiden en pensioneerde man, leidt een teruggetrokken leven. Wanneer zijn verleden hem plotseling lijkt in te halen, is de rust voorbij. Hij wordt gedwongen de confrontatie aan te gaan met de waarheid over zijn eerste liefde en moet de ondraaglijke gevolgen van zijn beslissingen destijds onder ogen zien. Een verfilming naar het boek van Julian Barnes. Ritesh Batra (The Lunchbox) fileert met humor, wijsheid en een feilloos gevoel hoe een onbedachtzame of verkeerd ingeschatte handeling jouw pad voor altijd kan bepalen.",
"room": 2,
"img": "sense.jpg",
"screenings": [
"18:00",
"20:25"
],
"kids":false
},
{
"title": "After the Storm",
"description": "Ryota won ooit een prijs met zijn eerste roman maar verdient nu zijn brood als detective. Zijn gokverslaving heeft hem vervreemd van zijn ex-vrouw en zijn zoon. Na de dood van zijn vader lijken zijn bejaarde moeder en mooie ex-vrouw door te gaan met hun leven. Wanneer ze op een avond allemaal in het flatje van de oude moeder zitten, barst een tyfoon los. Ryota, zijn ex en zijn zoon kunnen niet anders dan daar te blijven om te schuilen. Een zachtmoedig, melancholisch en - verrassend genoeg - ook grappig relaas van een gescheiden man die opnieuw toenadering zoekt tot zijn vervreemde familie. Koreeda (Like Father, Like Son, Nobody Knows, …) kan als geen ander Japanse familierelaties ontrafelen.",
"room": 3,
"img": "storm.jpg",
"screenings": [
"18:00"
],
"kids":false
},
{
"title": "Tarde para la Ira",
"description": "Na acht jaar in de gevangenis als gevolg van een misgelopen sieradenroof wil Curro maar één ding: een nieuw leven beginnen met zijn familie. Zijn komst leidt echter tot spanningen bij zijn broer en diens vriendin, die een rustig leventje leiden. Bovendien verandert de ontmoeting met Joseph, een mysterieuze vreemdeling, zijn plannen. Hij komt terecht in een onomkeerbare, donkere reis terug naar het verleden, vol wraak. Deze debuutfilm van acteur Raúl Arévalo won recent 4 Goyas (de Spaanse variant van de Oscar) waaronder die voor Beste Film.",
"room": 1,
"img": "tarde.jpg",
"screenings": [
"20:15"
],
"kids":false
},
{
"title": "Their Finest",
"description": "In deze charmante komedie staan twee scenarioschrijvers centraal. Tijdens WOII krijgen ze de opdracht een fictiefilm te maken die het moreel van de Britten moet opschroeven. Tijdens het schrijversproces krijgen ze voortdurend nieuwe richtlijnen van het ministerie van Oorlog om het script aan te passen. Om uiteindelijk de Amerikanen ook over de streep te trekken om deel te nemen aan de oorlog moeten ze de hoofdrol herschrijven met een Amerikaanse held. Een puike verzameling Britse acteurs zijn de kers op de verrukkelijke taart.",
"room": 4,
"img": "finest.jpg",
"screenings": [
"20:15"
],
"kids":false
}
]
}
This is how I make the list with JS:
{
const createListItems = schedule => {
const $li = document.createElement(`li`);
$li.textContent = `${schedule.date}`;
document.querySelector(`.days`).appendChild($li);
$li.addEventListener(`click`, handleDayClick);
};
const makeListItems = schedule => {
schedule.forEach(date => {
createListItems(date);
});
};
const parse = schedule => {
makeListItems(schedule);
};
This is all works out fine, so I continue with the code that I use for if you click on a date:
const handleDayClick = ({currentTarget: $li}) => {
loadFilmData($li);
};
const loadFilmData = $li => {
setActiveElement($li);
fetch(`./assets/data/buda.json`).then(r => r.json()).then(data => parse(parseMovieDetail));
}
const setActiveElement = $li => {
const $old = document.querySelector(`.active`);
if ($old) {
$old.classList.remove(`active`);
}
$li.classList.add(`active`);
}
const parseMovieDetail = date => {
const $container = document.querySelector(`.movies`);
$container.innerHTML = ``;
date.movies.forEach(movie => {
$movieList = document.querySelector(`.movies`);
const $h3 = document.createElement(`h3`);
$h3.textContent = `${movies.title}`;
$movieList.appendChild($h3);
const $img = document.createElement(`img`);
$img.setAttribute(`src`, `assets/img/${movies.img}`);
$img.setAttribute(`width`, 200);
$img.setAttribute(`height`, auto);
$movieList.appendChild($img);
const $p = document.createElement(`p`);
$p.classList.add(`description`);
$p.textContent = `${movies.description}`;
$movieList.appendChild($p);
const $div = document.createElement(`div`);
$div.classList.add(`meta`);
$movieList.appendChild($div);
const $ul = document.createElement(`ul`);
$ul.classList.add(`screenings`);
$div.classList.add($ul)
const $li = document.createElement(`li`);
$li.textContent = `${movies.screenings}`;
$ul.classList.add($li);
const $p2 = document.createElement(`p`);
$p2.textContent = `Zaal ${movies.room}`;
$div.appendChild($p2);
})
};
The problem I have right now if that if I click on a date, it doens't show anything and it give me this error in the console:
Uncaught (in promise) TypeError: schedule.forEach is not a function
Related
I want to list a lot of arrays from another file,
when I do a "for" to read any array inside.
The code compile do all the list, but when finish the last the code gave me is undefined. How do I fix that?.
I put images from the code. I let you both codes if you want
{
"movies": [
{
"original_title": "Joker",
"title": "Joker",
"vote_average": 8.6,
"overview": "Arthur Fleck es un hombre ignorado por la sociedad, cuya motivación en la vida es hacer reír. Pero una serie de trágicos acontecimientos le llevarán a ver el mundo de otra forma. Película basada en Joker, el popular personaje de DC Comics y archivillano de Batman, pero que en este film toma un cariz más realista y oscuro.",
"release_date": "2019-10-04"
},
{
"original_title": "Maleficent: Mistress of Evil",
"title": "Maléfica: Maestra del Mal",
"vote_average": 7.2,
"overview": "Secuela de \"Maléfica\" que cuenta la vida de Maléfica y Aurora, así como las alianzas que formarán para sobrevivir a las amenazas del mágico mundo en el que habitan.",
"release_date": "2019-10-18"
},
{
"original_title": "Terminator: Dark Fate",
"title": "Terminator: Destino Oscuro",
"vote_average": 6.8,
"overview": "Sarah Connor une todas sus fuerzas con una mujer cyborg para proteger a una joven de un extremadamente poderoso y nuevo Terminator.",
"release_date": "2019-11-01"
},
{
"original_title": "The Lion King",
"title": "El rey león",
"vote_average": 7.1,
"overview": "Un remake del clásico animado de Disney de 1994 'El rey león' que estará dirigido por Jon Favreu. Simba (Donald Glover) es el hijo del rey de los leones, Mufasa, y heredero de todo el reino. Pero cuando su padre es brutalmente asesinado por su tío Scar, decidirá huir, dejando vía libre para que su tío tome el puesto de su padre como líder pelisonline.co de la manada. En su camino, Simba se encuentra con el suricato pelisonline.co Timón y el jabalí Pumba, que le enseñarán a vivir la vida sin preocupaciones. Pero el joven león se verá obligado a decidir entre su vida libre de problemas o su destino como rey .",
"release_date": "2019-07-18"
},
{
"original_title": "葉問4",
"title": "Ip Man 4",
"vote_average": 5.4,
"overview": "Ip Man, el título de la cuarta película que seguirá contando la vida del mítico maestro de Bruce Lee, lanzó su primer tráiler, que se ha vuelto viral y ha sido reproducido miles de veces en YouTube. Para muchos seguidores del cine de artes marciales, Ip Man es un de las mejores sagas del género. La película volverá a ser protagonizada por Donnie Yen y estará dirigida por Wilson Yip.",
"release_date": "2019-10-18"
},
{
"original_title": "Fast & Furious Presents: Hobbs & Shaw",
"title": "Fast & Furious: Hobbs & Shaw",
"vote_average": 6.5,
"overview": "Desde que Hobbs, agente del Servicio de Seguridad Diplomática de Estados Unidos, y el británico Shaw, proscrito sin ley, se enfrentaron por primera vez, solo han intercambiado bofetadas y malas palabras. Pero cuando las despiadadas acciones de Brixton, un anarquista cibergenéticamente mejorado, amenazan el futuro de la humanidad, ambos se unen para derrotarlo.",
"release_date": "2019-08-01"
},
{
"original_title": "Spider-Man: Far from Home",
"title": "Spider-Man: Lejos de Casa",
"vote_average": 7.6,
"overview": "Peter Parker decide irse junto a Michelle Jones, Ned y el resto de sus amigos a pasar unas vacaciones a Europa después de los eventos ocurridos en Vengadores: EndGame. Sin embargo, el plan de Parker por dejar de lado sus superpoderes durante unas semanas se ven truncados cuándo es reclutado por Nick Fury para unirse a Mysterio (un humano que proviene de la Tierra 833, una dimensión del Multiverso, que tuvo su primera aparición en Doctor Strange) para luchar contra los Elementales (cuatro entes inmortales que vienen de la misma dimensión y que dominan los cuatro elementos de la Naturaleza, el fuego, el agua, el aire y la tierra) . En ese momento, Parker vuelve a ponerse el traje de Spider-Man para cumplir con su labor.",
"release_date": "2019-07-05"
},
{
"original_title": "Cars",
"title": "Cars",
"vote_average": 6.7,
"overview": "El aspirante a campeón de carreras Rayo McQueen está sobre la vía rápida al éxito, la fama y todo lo que él había soñado, hasta que por error toma un desvío inesperado en la polvorienta y solitaria Ruta 66. Su actitud arrogante se desvanece cuando llega a una pequeña comunidad olvidada que le enseña las cosas importantes de la vida que había olvidado.",
"release_date": "2006-07-06"
},
{
"original_title": "Zombieland: Double Tap",
"title": "Zombieland: Mata y remata",
"vote_average": 7.5,
"overview": "En esta secuela y empleando el característico sentido del humor del que hizo gala \"Zombieland\", el grupo de protagonistas tendrá que viajar desde la Casa Blanca hasta el corazón de los Estados Unidos, sobreviviendo a nuevas clases de muertos vivientes que han evolucionado desde lo sucedido hace algunos años, así como a algunos supervivientes humanos rezagados. Pero, por encima de todo, tendrán que tratar de soportar los inconvenientes de convivir entre ellos.",
"release_date": "2019-10-18"
},
{
"original_title": "The Angry Birds Movie 2",
"title": "Angry Birds 2: La película",
"vote_average": 6.5,
"overview": "Vuelven a la carga Red, el pájaro de color rojo con problemas de mal genio, y sus amigos Chuck, el pájaro amarillo hiperactivo, y Bomb, el pájaro negro muy volátil. En esta segunda parte, los pájaros protagonistas y los intrigantes cerdos de color verde llevarán su conflicto a un nuevo nivel. Y es que, aparecerá una nueva y malvada villana: Zeta, un pájaro que vive en una isla helada. Cuando Zeta lance una bola de hielo sobre la isla en la que se encuentran Red y compañía, nuestros protagonistas tendrán que hacer frente a esta nueva amenaza.",
"release_date": "2019-08-23"
},
{
"original_title": "Toy Story 4",
"title": "Toy Story 4",
"vote_average": 7.6,
"overview": "Woody siempre ha tenido claro cuál es su labor en el mundo y cuál es su prioridad: cuidar a su dueño, ya sea Andy o Bonnie. Sin embargo, Woody descubrirá lo grande que puede ser el mundo para un juguete cuando Forky se convierta en su nuevo compañero de habitación. Los juguetes se embarcarán en una aventura de la que no se olvidarán jamás.",
"release_date": "2019-06-21"
},
{
"original_title": "El Camino: A Breaking Bad Movie",
"title": "El Camino: Una película de Breaking Bad",
"vote_average": 7.1,
"overview": "Tiempo después de los eventos sucedidos tras el último episodio de la serie \"Breaking Bad\", el fugitivo Jesse Pinkman huye de sus perseguidores, de la ley y de su pasado.",
"release_date": "2019-10-11"
},
{
"original_title": "Scary Stories to Tell in the Dark",
"title": "Historias de miedo para contar en la oscuridad",
"vote_average": 6.3,
"overview": "Mill Valley, Pennsylvania, noche de Halloween, 1968. Después de gastar una broma a un matón de la escuela, Sarah y sus amigos deciden colarse en una casa supuestamente embrujada que una vez perteneció a la poderosa familia Bellows, desatando fuerzas oscuras que no podrán controlar.",
"release_date": "2019-08-09"
},
{
"original_title": "Aladdin",
"title": "Aladdín",
"vote_average": 7.1,
"overview": "Aladdin es un adorable pero desafortunado ladronzuelo enamorado de la hija del Sultán, la princesa Jasmine. Para intentar conquistarla, acepta el desafío de Jafar, que consiste en entrar a una cueva en mitad del desierto para dar con una lámpara mágica que le concederá todos sus deseos. Allí es donde Aladdín conocerá al Genio, dando inicio a una aventura como nunca antes había imaginado.",
"release_date": "2019-05-24"
},
{
"original_title": "ワンピーススタンピード",
"title": "One Piece: Stampede",
"vote_average": 7.6,
"overview": "La película tiene lugar durante la Pirates Expo, \"hecha por piratas para piratas\", donde los piratas de todo el mundo, incluidos algunos de sus personajes más infames, se unen a la búsqueda de un gran tesoro para encontrar un tesoro perdido, esta vez el tesoro. Perteneció nada menos que a Gold Roger!",
"release_date": "2019-11-15"
},
{
"original_title": "It Chapter Two",
"title": "It Capítulo 2",
"vote_average": 6.9,
"overview": "27 años después, los ex-miembros del Club de los Perdedores, que crecieron y se mudaron lejos de Derry, vuelven a unirse tras una devastadora llamada telefónica.",
"release_date": "2019-09-06"
},
{
"original_title": "Rattlesnake",
"title": "Serpiente de cascabel",
"vote_average": 5.6,
"overview": "Una misteriosa desconocida ha salvado a su hija de una mordedura letal de serpiente. Ahora, tiene que devolverle el favor matando a un desconocido.",
"release_date": "2019-10-25"
},
{
"original_title": "Eli",
"title": "Eli",
"vote_average": 6,
"overview": "Eli Miller es un niño que padece una enfermedad autoinmune. Como último recurso, se traslada con sus padres a una mansión libre de gérmenes para recibir tratamiento. Durante su estancia, le atormentan visiones terroríficas que otros consideran alucinaciones. Definitivamente, algo siniestro se esconde entre estas paredes.",
"release_date": "2019-10-18"
},
{
"original_title": "John Wick",
"title": "John Wick",
"vote_average": 7.2,
"overview": "En Nueva York, John Wick, un asesino a sueldo retirado, vuelve otra vez a la acción para vengarse de los gángsters que le quitaron todo.",
"release_date": "2014-10-22"
},
{
"original_title": "Gemini Man",
"title": "Géminis",
"vote_average": 5.8,
"overview": "Un asesino a sueldo, demasiado mayor, decide retirarse. Pero esto no le va a resultar tan fácil, pues tendrá que enfrentarse a un clon suyo, mucho más joven.",
"release_date": "2019-10-11"
}
],
"total_movies": 20
}
const fs = require("fs");
let ListMovie = fs.readFileSync("C:/Users/soraw/DigitalHouse/dh-movies/movies.json", 'utf8');
let ListMovieArray = JSON.parse(ListMovie);
var i = 0;
function ayuda() {
for (i = 0; i < ListMovieArray.total_movies; i++) {
console.log(ListMovieArray.movies[i].title)
}
}
console.log(ayuda())
Just to clarify your confusion, here is the updated function:-
function ayuda() {
const titleArray = [];
for (let i = 0; i < ListMovieArray.total_movies; i++) {
titleArray.push(ListMovieArray.movies[i].title);
}
return titleArray;
}
console.log(ayuda())
You will see the result just fine.
if you see your function is void type function
function ayuda() {
for (i = 0; i < ListMovieArray.total_movies; i++) {
console.log(ListMovieArray.movies[i].title)
}
}
which void function return undefined then when you try to console log undefined then it log two undefined
first undefined is longed by by your function ayuda,
second undefined is longed by return type of console.log which is
also void type function so it is undefined
your function call actually looks like
console.log(undefined)
to fix this you should return some list from fome valid value
below code is returning array[] of movies title which later can be used by caller
function ayuda(ListMovieArray) {
const titleArray = [];
for (let i = 0; i < ListMovieArray.total_movies; i++) {
titleArray.push(ListMovieArray.movies[i].title);
}
return titleArray;
}
OR
below cod is longing list item on console and returning true when
complete
function ayuda(ListMovieArray) {
for (i = 0; i < ListMovieArray.total_movies; i++) {
console.log(ListMovieArray.movies[i].title)
}
return true// or '';
}
return type is totally depend you your use case
Your code seems to not handle any errors. You said you have lot of data, try using promises.
const fs = require("fs");
const ayuda = (fileName) => {
return new Promise((Resolve, Reject) => {
fs.readFile(fileName, 'utf8', (err, data) => {
if(err) { Reject(err); }
else {
Resolve(data.movies.filter(y => y.title))
}
})
})
}
ayuda(PATH_TO_FILE).then(x => console.log(x)).catch(err => console.log(err))
In last you are getting an error because you are not returning anything in your function.
Basically console.log() call your function, once your function called, the execution starts inside the function print the statement inside the for a loop. Once function execution complete it returns undefined and print undefined in outside of your console.
you can do like below:-
const fs = require("fs");
let ListMovie = fs.readFileSync("C:/Users/soraw/DigitalHouse/dh-movies/movies.json", 'utf8');
let ListMovieArray = JSON.parse(ListMovie);
var i = 0;
function ayuda() {
for (i = 0; i < ListMovieArray.total_movies; i++) {
console.log(ListMovieArray.movies[i].title)
}
// you can return anythig like 1 or ''
return 1;
}
console.log(ayuda())
// if you do not want to return anything you can also call the function directly, without using console like this
ayuda();
you can implement this function using es6 also, which is given below:-
const fs = require("fs");
let ListMovie = fs.readFileSync("C:/Users/soraw/DigitalHouse/dh-movies/movies.json", 'utf8');
let ListMovieArray = JSON.parse(ListMovie);
const ayuda = () => {
for (let i = 0; i < ListMovieArray.length; i++) {
console.log(ListMovieArray.movies[i].title);
}
return '';
}
console.log(ayuda());
I'm trying to get some data from a GraphQL query, but i'm having some trouble.
When i try to map over some JSon data, i can't get data from the arrays inside the data.
I'm not sure what i'm missing.
What i've tried:
This works fine:
<div>
{data.allDataJson.nodes.map(listing => (
<div>
<h2>{listing.name}</h2>
</div>
))}
</div>
but when i try to get the Camere array, i can't access the data.
When i do: it gives me the error
{data.allDataJson.nodes.map(listing => (
<div>
<h2>{listing.name}</h2>
<h2>{listing.camere}</h2>
</div>
))}
Objects are not valid as a React child (found: object with keys {name, amount}). If you meant to render a collection of children, use an array instead.
also this:
<div>
{data.allDataJson.nodes.map(listing => (
<div>
<h2>{listing.name}</h2>
{listing.camere.map(
camere =>
<div>
<h1>{camere.name}</h1>
<h1>{camere.amount}</h1>
</div>
)}
</div>
))}
</div>
When i try to do .map on it like on an array, i get the error in the post title.
My code:
import React from 'react';
import { useStaticQuery, graphql } from "gatsby";
const Listing = () => {
const data = useStaticQuery(graphql`
query ListingQuery {
allDataJson {
nodes {
camere {
name
amount
}
name
}
}
}
`);
return (
<div>
{data.allDataJson.nodes.map(listing => (
<div>
<h2>{listing.name}</h2>
{listing.camere.map(home => <h1>{home.name}</h1>)}
</div>
))}
</div>
);
};
export default Listing;
My data:
[
{
"name":"Vila Franceza",
"detaliipret":{
"pret":"3000lei",
"perioada":"iunie - iulie",
"detaliu1":"Vila se inchiriaza exclusiv integral.",
"detaliu2":"Vila se poate inchiria de persoane juridice sau de persoane fizice."
},
"detaliidescriere":[
{
"text":"Vila Franceza este situată pe malul nordic al lacului Colibița, într-o poziție care asigură o perspectivă unică asupra lacului dar și a munților Călimani.",
"type":"normal"
},
{
"text":"La apă se ajunge prin intermediul debarcaderului situat la doar câțiva metri.",
"type":"normal"
},
{
"text":"Accesul la vilă vă ferește de vizitatori nedoriți.",
"type":"normal"
},
{
"text":"În apropierea vilei există mai multe restaurante și păstrăvării.",
"type":"normal"
},
{
"text":"Pentru amatorii de drumeții există trasee turistice pentru vizitarea împrejurimilor și a Munților Călimani. Zona este foarte darnică în privința ciupercilor de pădure.",
"type":"normal"
},
{
"text":"Există, de asemenea, rute pentru amatorii de mountain bike.",
"type":"normal"
},
{
"text":"Pentru a vă asigura discreția, liniștea și confortul de care aveți nevoie, nu se inchiriază camere individuale.",
"type":"normal"
},
{
"text":"Vila Franceza asigura un spatiu de cazare ideal pentru 15 persoane.",
"type":"normal"
},
{
"text":"Vila Franceza va ofera liniste, confort si discretie pentru o vacanta sau o luna de miere perfecta.",
"type":"normal"
},
{
"text":"Constructia este moderna iar peretii de sticla permit iluminarea naturala in cea mai parte a zilei. Lacul si crestele muntoase pot fi admirate cu usurinta, dar cu discretie, din interior.",
"type":"normal"
},
{
"text":"Inchirierea vilei se poate face pentru orice perioada din cursul unei saptamani pentru minim două zile. Din respect pentru confortul dumneavoastră, Vila Franceză se inchiriază exclusiv integral.",
"type":"normal"
},
{
"text":"In interiorul vilei nu se fumeaza! Sunt admise animale de companie.",
"type":"normal"
}
],
"camere":[
{
"name":"Livingroom deschis",
"amount":1
},
{
"name":"Bucătărie americană",
"amount":1
},
{
"name":"Sală pentru servirea mesei",
"amount":1
},
{
"name":"Ieșire directă pe terasă",
"amount":1
},
{
"name":"Terasă deschisă pentru plajă, sport, cu loc acoperit pentru servirea mesei",
"amount":1
},
{
"name":"Dormitor cu jacuzzi",
"amount":1
},
{
"name":"Dormitor VIP cu jacuzzi și pat king size",
"amount":1
},
{
"name":"dormitoare cu pat dublu",
"amount":5
},
{
"name":"salon cu canapea extensibilă dublă",
"amount":1
},
{
"name":"Spațiu de joacă pentru copii",
"amount":1
}
],
"dotari":[
"TV satelit",
"Wi-Fi",
"Sistem de sonorizare stereo profesional",
"Masa de biliard",
"Joc fotbal de masa Babyfoot",
"Doua caiace pentru amatorii de vaslit",
"Saniute pentru sezonul de iarna",
"Semineu cu lemne in living, cu scaune incalzite",
"Incalzire centrala (electrica, pe lemne, pe gaz )",
"Masina de spalat rufe",
"Masina de uscat rufe",
"Fier si masa de calcat",
"Uscatoare de par",
"Gril exterior XXL",
"Disc pentru grătar",
"Spa exterior cu apa ionizata, incalzi,ta, capacitate 10 persoane",
"Sauna",
"Debarcader privat pentru sporturi nautice",
"Mobilier de plaja",
"Parcare privată",
"Sistem de supraveghere video",
"Plita pe gaz",
"Microunde",
"Prajitor paine",
"Taietor electric",
"Robot de bucatarie",
"Vesela si accesorii pentru 20 de persoane",
"Masina de spalat vase",
"Frigider dublu",
"Cuptor pizza pentru 15 persoane. Se poate folosi si la patiserie, friptura etc",
"Expresor și filtru cafea"
]
},
{
"name":"Casa Pescarilor",
"detaliipret":{
"pret":"800lei",
"perioada":"iunie - iulie",
"detaliu1":"Vila se inchiriaza exclusiv integral.",
"detaliu2":"Vila se poate inchiria de persoane juridice sau de persoane fizice."
},
"detaliidescriere":[
{
"text":"Vila Franceza este situată pe malul nordic al lacului Colibița, într-o poziție care asigură o perspectivă unică asupra lacului dar și a munților Călimani.",
"type":"normal"
},
{
"text":"La apă se ajunge prin intermediul debarcaderului situat la doar câțiva metri.",
"type":"normal"
},
{
"text":"Accesul la vilă vă ferește de vizitatori nedoriți.",
"type":"normal"
},
{
"text":"În apropierea vilei există mai multe restaurante și păstrăvării.",
"type":"normal"
},
{
"text":"Pentru amatorii de drumeții există trasee turistice pentru vizitarea împrejurimilor și a Munților Călimani. Zona este foarte darnică în privința ciupercilor de pădure.",
"type":"normal"
},
{
"text":"Există, de asemenea, rute pentru amatorii de mountain bike.",
"type":"normal"
},
{
"text":"Pentru a vă asigura discreția, liniștea și confortul de care aveți nevoie, nu se inchiriază camere individuale.",
"type":"normal"
},
{
"text":"Vila Franceza asigura un spatiu de cazare ideal pentru 15 persoane.",
"type":"normal"
},
{
"text":"Vila Franceza va ofera liniste, confort si discretie pentru o vacanta sau o luna de miere perfecta.",
"type":"normal"
},
{
"text":"Constructia este moderna iar peretii de sticla permit iluminarea naturala in cea mai parte a zilei. Lacul si crestele muntoase pot fi admirate cu usurinta, dar cu discretie, din interior.",
"type":"normal"
},
{
"text":"Inchirierea vilei se poate face pentru orice perioada din cursul unei saptamani pentru minim două zile. Din respect pentru confortul dumneavoastră, Vila Franceză se inchiriază exclusiv integral.",
"type":"normal"
},
{
"text":"In interiorul vilei nu se fumeaza! Sunt admise animale de companie.",
"type":"normal"
}
],
"camere":[
{
"name":"Livingroom deschis",
"amount":1
},
{
"name":"Bucătărie americană",
"amount":1
},
{
"name":"Sală pentru servirea mesei",
"amount":1
},
{
"name":"Ieșire directă pe terasă",
"amount":1
},
{
"name":"Terasă deschisă pentru plajă, sport, cu loc acoperit pentru servirea mesei",
"amount":1
},
{
"name":"Dormitor cu jacuzzi",
"amount":1
},
{
"name":"Dormitor VIP cu jacuzzi și pat king size",
"amount":1
},
{
"name":"dormitoare cu pat dublu",
"amount":5
},
{
"name":"salon cu canapea extensibilă dublă",
"amount":1
},
{
"name":"Spațiu de joacă pentru copii",
"amount":1
}
],
"dotari":[
"TV satelit",
"Wi-Fi",
"Sistem de sonorizare stereo profesional",
"Masa de biliard",
"Joc fotbal de masa Babyfoot",
"Doua caiace pentru amatorii de vaslit",
"Saniute pentru sezonul de iarna",
"Semineu cu lemne in living, cu scaune incalzite",
"Incalzire centrala (electrica, pe lemne, pe gaz )",
"Masina de spalat rufe",
"Masina de uscat rufe",
"Fier si masa de calcat",
"Uscatoare de par",
"Gril exterior XXL",
"Disc pentru grătar",
"Spa exterior cu apa ionizata, incalzi,ta, capacitate 10 persoane",
"Sauna",
"Debarcader privat pentru sporturi nautice",
"Mobilier de plaja",
"Parcare privată",
"Sistem de supraveghere video",
"Plita pe gaz",
"Microunde",
"Prajitor paine",
"Taietor electric",
"Robot de bucatarie",
"Vesela si accesorii pentru 20 de persoane",
"Masina de spalat vase",
"Frigider dublu",
"Cuptor pizza pentru 15 persoane. Se poate folosi si la patiserie, friptura etc",
"Expresor și filtru cafea"
]
},
{
"name":"Modern Rooms Resort Colibita",
"detaliipret":{
"pret":"450lei",
"perioada":"iunie - iulie",
"detaliu1":"Vila se inchiriaza exclusiv integral.",
"detaliu2":"Vila se poate inchiria de persoane juridice sau de persoane fizice."
},
"detaliidescriere":[
{
"text":"Vila Franceza este situată pe malul nordic al lacului Colibița, într-o poziție care asigură o perspectivă unică asupra lacului dar și a munților Călimani.",
"type":"normal"
},
{
"text":"La apă se ajunge prin intermediul debarcaderului situat la doar câțiva metri.",
"type":"normal"
},
{
"text":"Accesul la vilă vă ferește de vizitatori nedoriți.",
"type":"normal"
},
{
"text":"În apropierea vilei există mai multe restaurante și păstrăvării.",
"type":"normal"
},
{
"text":"Pentru amatorii de drumeții există trasee turistice pentru vizitarea împrejurimilor și a Munților Călimani. Zona este foarte darnică în privința ciupercilor de pădure.",
"type":"normal"
},
{
"text":"Există, de asemenea, rute pentru amatorii de mountain bike.",
"type":"normal"
},
{
"text":"Pentru a vă asigura discreția, liniștea și confortul de care aveți nevoie, nu se inchiriază camere individuale.",
"type":"normal"
},
{
"text":"Vila Franceza asigura un spatiu de cazare ideal pentru 15 persoane.",
"type":"normal"
},
{
"text":"Vila Franceza va ofera liniste, confort si discretie pentru o vacanta sau o luna de miere perfecta.",
"type":"normal"
},
{
"text":"Constructia este moderna iar peretii de sticla permit iluminarea naturala in cea mai parte a zilei. Lacul si crestele muntoase pot fi admirate cu usurinta, dar cu discretie, din interior.",
"type":"normal"
},
{
"text":"Inchirierea vilei se poate face pentru orice perioada din cursul unei saptamani pentru minim două zile. Din respect pentru confortul dumneavoastră, Vila Franceză se inchiriază exclusiv integral.",
"type":"normal"
},
{
"text":"In interiorul vilei nu se fumeaza! Sunt admise animale de companie.",
"type":"normal"
}
],
"camere":[
{
"name":"Livingroom deschis",
"amount":1
},
{
"name":"Bucătărie americană",
"amount":1
},
{
"name":"Sală pentru servirea mesei",
"amount":1
},
{
"name":"Ieșire directă pe terasă",
"amount":1
},
{
"name":"Terasă deschisă pentru plajă, sport, cu loc acoperit pentru servirea mesei",
"amount":1
},
{
"name":"Dormitor cu jacuzzi",
"amount":1
},
{
"name":"Dormitor VIP cu jacuzzi și pat king size",
"amount":1
},
{
"name":"dormitoare cu pat dublu",
"amount":5
},
{
"name":"salon cu canapea extensibilă dublă",
"amount":1
},
{
"name":"Spațiu de joacă pentru copii",
"amount":1
}
],
"dotari":[
"TV satelit",
"Wi-Fi",
"Sistem de sonorizare stereo profesional",
"Masa de biliard",
"Joc fotbal de masa Babyfoot",
"Doua caiace pentru amatorii de vaslit",
"Saniute pentru sezonul de iarna",
"Semineu cu lemne in living, cu scaune incalzite",
"Incalzire centrala (electrica, pe lemne, pe gaz )",
"Masina de spalat rufe",
"Masina de uscat rufe",
"Fier si masa de calcat",
"Uscatoare de par",
"Gril exterior XXL",
"Disc pentru grătar",
"Spa exterior cu apa ionizata, incalzi,ta, capacitate 10 persoane",
"Sauna",
"Debarcader privat pentru sporturi nautice",
"Mobilier de plaja",
"Parcare privată",
"Sistem de supraveghere video",
"Plita pe gaz",
"Microunde",
"Prajitor paine",
"Taietor electric",
"Robot de bucatarie",
"Vesela si accesorii pentru 20 de persoane",
"Masina de spalat vase",
"Frigider dublu",
"Cuptor pizza pentru 15 persoane. Se poate folosi si la patiserie, friptura etc",
"Expresor și filtru cafea"
]
}
]
What i want to be able to do:
Get all the details from all the data.
Do a conditional render.
For readability, add another function to extract names for each camere.
const getNames = (camere) => (camere.map(home => <h1>{home.name}</h1>))
{data.allDataJson.nodes.map(listing => (
<div>
<h2>{listing.name}</h2>
{
listing.camere &&
listing.camere.length > 0 &&
this.getNames(listing.camere)
}
</div>
))}
I have this JSON file with info about a cinema.
"schedule": [
{
"day": "Maandag",
"date": "22/05/2017",
"movies": [
{
"title": "I Am Not Your Negro",
"description": "In deze Belgische coproductie vertrekt Raoul Peck van een onafgewerkte roman van de Afro-Amerikaanse schrijver James Baldwin voor een reis door de zwarte geschiedenis die de Burgerrechtenbeweging uit de jaren zestig verbindt met het huidige #BlackLivesMatter. De tekst, geschreven in 1979, is helaas nog altijd heel actueel en bespreekt een diep geworteld racisme. De film is een treffend betoog op basis van archiefbeelden, filmfragmenten en actuele nieuwsbeelden die aan elkaar gepraat worden door de bezwerende stem van Samuel L. Jackson.",
"img": "negro.jpg",
"room": 1,
"screenings": [
"20:25"
],
"kids":false
},
{
"title": "Lady MacBeth",
"description": "De jonge Katherine leeft Northumberland in 1865. Ze is er gevangene in eigen huis en wordt er door haar sadistische echtgenoot en diens autoritaire vader tot op het bot vernederd. Leven in zo’n liefdeloze wereld moet in deze krachtige kostuumfilm wel tot excessen leiden. Wanneer Katherine een allesverzengende relatie aanknoopt met een knecht gaat het mis. Een indrukwekkende speelfilmdebuut van theater- en operaregisseur William Oldroyd.",
"img": "macbeth.jpg",
"room": 2,
"screenings": [
"20:15"
],
"kids":false
},
{
"title": "Tarde para la Ira",
"description": "Na acht jaar in de gevangenis als gevolg van een misgelopen sieradenroof wil Curro maar één ding: een nieuw leven beginnen met zijn familie. Zijn komst leidt echter tot spanningen bij zijn broer en diens vriendin, die een rustig leventje leiden. Bovendien verandert de ontmoeting met Joseph, een mysterieuze vreemdeling, zijn plannen. Hij komt terecht in een onomkeerbare, donkere reis terug naar het verleden, vol wraak. Deze debuutfilm van acteur Raúl Arévalo won recent 4 Goyas (de Spaanse variant van de Oscar) waaronder die voor Beste Film.",
"room": 3,
"img": "tarde.jpg",
"screenings": [
"20:15"
],
"kids":false
}
]
},
{
"day": "Dinsdag",
"date": "23/05/2017",
"movies": [
{
"title": "Django",
"description": "De virtuoze gitarist Django Reinhardt, geboren in een Henegouws dorp, was een Roma. Op het moment dat hij in Parijs concertzalen laat vollopen, vallen de Duitsers Frankrijk binnen. De film focust op de oorlogsjaren van de virtuoze gitarist en zoomt in op zijn poging om naar Zwitserland te vluchten. De aandacht ligt op het droevige lot van de Roma-zigeuners, een bevolkingsgroep die door de nazi’s vervolgd werden, tijdens die oorlogsjaren. De aanstekelijke muziek wordt vertolkt door het Rosenberg Trio.",
"room": 1,
"img": "django.jpg",
"screenings": [
"20:15"
],
"kids":false
},
{
"title": "March of the Penguins 2",
"description": "In March of The Penguins 2 keert regisseur Luc Jacquet terug met een even verbluffend vervolg, en voert de kijker met behulp van drones en onderwatercamera’s mee naar onherbergzame plekken op Antarctica. Ditmaal volgen we een jonge pinguïn die op het punt staat zijn eerste grote reis te maken, vol gevaar en obstakels. Het vervolgverhaal vertelt de lotsbestemming van één pinguïn, wiens krachtige en mysterieuze instincten hem in staat stellen om te overleven.",
"room": 3,
"img": "march.jpg",
"screenings": [
"20:15"
],
"kids":true
},
{
"title": "Their Finest",
"description": "In deze charmante komedie staan twee scenarioschrijvers centraal. Tijdens WOII krijgen ze de opdracht een fictiefilm te maken die het moreel van de Britten moet opschroeven. Tijdens het schrijversproces krijgen ze voortdurend nieuwe richtlijnen van het ministerie van Oorlog om het script aan te passen. Om uiteindelijk de Amerikanen ook over de streep te trekken om deel te nemen aan de oorlog moeten ze de hoofdrol herschrijven met een Amerikaanse held. Een puike verzameling Britse acteurs zijn de kers op de verrukkelijke taart.",
"room": 3,
"img": "finest.jpg",
"screenings": [
"20:15"
],
"kids":false
}
]
I want to make a list where I show the dates, so that you can click on it and see the movies on that day.
When I try to do that. It only shows the first date: 22/05/2017. And not the other one: 23/05/2017.
I'm using this code:
{
const createListItems = schedule => {
const $li = document.createElement(`li`);
$li.textContent = `${schedule.date}`;
document.querySelector(`.days`).appendChild($li);
$li.addEventListener(`click`, handleDayClick);
};
const makeListItems = schedule => {
schedule.forEach(date => {
createListItems(date);
});
};
const parse = schedule=> {
makeListItems(schedule);
};
const init = () => {
const jsonFile = `./assets/data/buda.json`;
fetch(jsonFile).then(r => r.json()).then(data => parse(data.schedule));
};
init();
}
Does someone know what I do wrong?
I removed this line of code : $li.addEventListener('click', handleDayClick);
I haven't declared the function handleDayClick yet, so that was the problem.
I need to print this array vertically in the div with ID 'stopwatch'
var klas = ['Nick Arts', 'Thijs Assmann', 'Rick Bats', 'Kim Cobben', 'Richard van Dartel', 'Dennis van Empel', 'Luuk van Gennip', 'Florent Guichard', 'Mahamed Hassan', 'Stijn Hendriks', 'Dirk van Herpen', 'Daniël Kartotaroeno', 'Tony van Klink', 'Stephan Klomp', 'Twan Korthout', 'Max Lenssen', 'Aron van der Linden', 'Aron de Looijer', 'Anil Manbodh', 'Sietse Manders', 'Ben Moerkens', 'Sven van Mourik', 'Teun Salters', 'Sven Slijkoord', 'Daan Soeten', 'Joey van Straalen', 'Koen van Veen', 'Maxim Westbroek'];
I want it like
Nick Arts
Thijs Assmann
Just use Array#join for it:
var klas = ['Nick Arts', 'Thijs Assmann', 'Rick Bats', 'Kim Cobben', 'Richard van Dartel', 'Dennis van Empel', 'Luuk van Gennip', 'Florent Guichard', 'Mahamed Hassan', 'Stijn Hendriks', 'Dirk van Herpen', 'Daniël Kartotaroeno', 'Tony van Klink', 'Stephan Klomp', 'Twan Korthout', 'Max Lenssen', 'Aron van der Linden', 'Aron de Looijer', 'Anil Manbodh', 'Sietse Manders', 'Ben Moerkens', 'Sven van Mourik', 'Teun Salters', 'Sven Slijkoord', 'Daan Soeten', 'Joey van Straalen', 'Koen van Veen', 'Maxim Westbroek'];
document.getElementById('stopwatch').innerHTML = klas.join('<br>');
<div id="stopwatch"></div>
var klas = ['Nick Arts', 'Thijs Assmann', 'Rick Bats', 'Kim Cobben', 'Richard van Dartel', 'Dennis van Empel', 'Luuk van Gennip', 'Florent Guichard', 'Mahamed Hassan', 'Stijn Hendriks', 'Dirk van Herpen', 'Daniël Kartotaroeno', 'Tony van Klink', 'Stephan Klomp', 'Twan Korthout', 'Max Lenssen', 'Aron van der Linden', 'Aron de Looijer', 'Anil Manbodh', 'Sietse Manders', 'Ben Moerkens', 'Sven van Mourik', 'Teun Salters', 'Sven Slijkoord', 'Daan Soeten', 'Joey van Straalen', 'Koen van Veen', 'Maxim Westbroek'];
element.textContent = klas.join('\n')
I'm trying to append an element to my JSON object. Structure of JSON is as follows:
[
{
"newId": "167249-20",
"title": "El Supremo ordena reabrir la causa por los delitos fiscales de Carlos Fabra",
"created": "2011-12-01T13:22:00+01:00",
"priority": "99999",
"primaryCategoryId": "305",
"summary": "La sala de lo penal de este órgano ha dejado sin efecto el archivo por prescripción de cuatro de los cinco delitos fiscales que se le imputan al expresidente de la Diputación de Castellón.",
"image": "http%3A%2F%2Fwww.heraldo.es%2Fuploads%2Fimagenes%2Frec15%2F_reaperuradelcasofabra9558214_d07227b1.jpg",
"timestamp": "1322742120"
},
{
"newId": "167233-20",
"title": "Victoria Rodríguez y Claire Morel se imponen en el Open de Andorra",
"created": "2011-12-01T13:11:00+01:00",
"priority": "5",
"primaryCategoryId": "307",
"summary": "Las patinadoras del Aramón Jaca y del CETDI, Victoria Rodríguez Long y Claire Morel se impusieron en sus respectivas categorías en el Open de Andorra de Patinaje sobre hielo disputado el pasado fin de semana en la pista de Canillo.",
"image": "",
"timestamp": "1322741460"
}
]
so I want to add and extra attribute (imageLocation) as follows:
[
{
"newId": "167249-20",
"title": "El Supremo ordena reabrir la causa por los delitos fiscales de Carlos Fabra",
"created": "2011-12-01T13:22:00+01:00",
"priority": "99999",
"primaryCategoryId": "305",
"summary": "La sala de lo penal de este órgano ha dejado sin efecto el archivo por prescripción de cuatro de los cinco delitos fiscales que se le imputan al expresidente de la Diputación de Castellón.",
"image": "http%3A%2F%2Fwww.heraldo.es%2Fuploads%2Fimagenes%2Frec15%2F_reaperuradelcasofabra9558214_d07227b1.jpg",
"timestamp": "1322742120",
"imageLocation:" "xxx/xxx/xxx/xxx/xxx/xxx/jpg"
},
{
"newId": "167233-20",
"title": "Victoria Rodríguez y Claire Morel se imponen en el Open de Andorra",
"created": "2011-12-01T13:11:00+01:00",
"priority": "5",
"primaryCategoryId": "307",
"summary": "Las patinadoras del Aramón Jaca y del CETDI, Victoria Rodríguez Long y Claire Morel se impusieron en sus respectivas categorías en el Open de Andorra de Patinaje sobre hielo disputado el pasado fin de semana en la pista de Canillo.",
"image": "",
"timestamp": "1322741460",
"imageLocation:" "xxx/xxx/xxx/xxx/xxx/xxx/jpg"
}
]
If you have parsed your JSON string into javascript object named jsonObj, you can easily loop through collection and add the new property:
for (int i = 0; i<jsonObj.length;i++)
{
var singleItem = jsonObj[0];
singleItem.imageLocation = "http://someUrl/" + singleItem.newId; // example
}
If you then need to get JSON as string, use JSON.stringify(jsonObj).
If you haven't parsed you JSON string to Javascript object, you can do it easily:
var jsonObj = JSON.parse(jsonString);
You've talked about a "JSON object," but my guess is that you're not dealing with strings (JSON), you're actually dealing with the deserialized JavaScript object (and array).
If so, just loop through the array and assign the new property to the objects:
var index;
for (index = 0; index < array.length; ++index) {
array[index].imageLocation = /* ...value here */;
}
...where array is a reference to the array you've quoted in your question.