DOM content from lists: Difference between revisions
		
		
		
		Jump to navigation
		Jump to search
		
| Line 65: | Line 65: | ||
   });  |    });  | ||
</pre>  | |||
</div>  | |||
== Using map ==  | |||
<div class=qu>  | |||
<code>r.albums</code> is a list, each entry includes a <code>title</code> and <code>year</code>  | |||
*An alternative is the forEach method  | |||
<pre class=usr>  | |||
fetch('/beatles.json')  | |||
  .then((r)=>r.json())  | |||
  .then((r)=>{  | |||
    let lst  = r.albums.forEach(a => {  | |||
      let div = document.createElement('div');  | |||
      div.innerHTML = `${a.title}, ${a.year}`;  | |||
      return div  | |||
    });  | |||
    document.body.append(lst[0],lst[1],lst[2]);  | |||
  });  | |||
</pre>  | |||
<pre class=ans>  | |||
fetch('/beatles.json')  | |||
  .then((r)=>r.json())  | |||
  .then((r)=>{  | |||
    document.body.append(... r.albums.map(b => {  | |||
      let div = document.createElement('div');  | |||
      div.innerHTML = `${b.title}, ${b.year}`;  | |||
      return div  | |||
    }));  | |||
  });  | |||
</pre>  | </pre>  | ||
</div>  | </div>  | ||
Revision as of 14:14, 27 August 2021
beatles.json
{"members":
 [
   {"firstName":"Paul","lastName":"McCartney"},
   {"firstName":"John","lastName":"Lennon"},
   {"firstName":"Ringo","lastName":"Starr"},
   {"firstName":"George","lastName":"Harrison"}
 ]
}
Using a for loop
- When you have data in a list you can use a for loop to generate content
 
fetch('/beatles.json')
  .then((r)=>r.json())
  .then((r)=>{
    for(let b of r.members){
      let div = document.createElement('div');
      div.innerHTML = `${b.lastName}, ${b.firstName}`;
      document.body.append(div);
    }
  });
fetch('/beatles.json')
  .then((r)=>r.json())
  .then((r)=>{
    for(let beatle of r.members){
      let div = document.createElement('div');
      div.innerHTML = `${beatle.firstName} ${beatle.lastName}`;
      document.body.append(div);
    }
  });
Using forEach
- An alternative is the forEach method
 
fetch('/beatles.json')
  .then((r)=>r.json())
  .then((r)=>{
    r.members.forEach(b => {
      let div = document.createElement('div');
      div.innerHTML = `${b.lastName}, ${b.firstName}`;
      document.body.append(div);
    })
  });
fetch('/beatles.json')
  .then((r)=>r.json())
  .then((r)=>{
    r.members.forEach(b => {
      let div = document.createElement('div');
      div.innerHTML = `${b.firstName} ${b.lastName}`;
      document.body.append(div);
    })
  });
Using map
r.albums is a list, each entry includes a title and year
- An alternative is the forEach method
 
fetch('/beatles.json')
  .then((r)=>r.json())
  .then((r)=>{
    let lst  = r.albums.forEach(a => {
      let div = document.createElement('div');
      div.innerHTML = `${a.title}, ${a.year}`;
      return div
    });
    document.body.append(lst[0],lst[1],lst[2]);
  });
fetch('/beatles.json')
  .then((r)=>r.json())
  .then((r)=>{
    document.body.append(... r.albums.map(b => {
      let div = document.createElement('div');
      div.innerHTML = `${b.title}, ${b.year}`;
      return div
    }));
  });