Вопрос по json. 
		
		
		
		Здравствуйте. Имеется json. Вроде бы получилось вывести и стилизовать его на html, но не получается сделать фильтрацию. Т.е. поле, в котором при вводе данных name, будет фильтроваться. Что не так? Что Я упустила. Спасибо! 
	
let users = [];
    let nameFilter = `name`;
    
    const render = () => {
        document.body.innerHTML = users
            .filter((item) => !nameFilter || item.name.toUpperCase().includes(nameFilter.toUpperCase())
                .map((item) => `<span class="name">${item.name}</span>`).join(``));
    }
    fetch(`users.json`)
        .then((res) => res.json())
        .then((data) => users = data)
        .then(render);
 | 
	
		
 Смотри в консоль и читай что тебе пишет. 
	У тебя скобки криво расставлены: .map у тебя идёт после includes, а не после filter.  | 
	
		
 Цитата: 
	
 Я прошу прощения, а как должно быть? В консоле написано, что map не функция.  | 
	
		
 Раскрыл запись и вынес наверх то что необязательно задавать налету: 
	
const nameFilterUpper = nameFilter.toUpperCase();
const wrapItemNameInSpan = (item) => `<span class="name">${item.name}</span>`;
// сейчас у тебя так
const render = () => {
  document.body.innerHTML = users.filter((item) => {
    const itemNameUpper = item.name.toUpperCase();
    // естественно .map не функция, т.к. .includes возаращает Boolean, а у Boolean нет метода .map
    return !nameFilter || itemNameUpper.includes(nameFilterUpper).map(wrapItemNameInSpan).join(``)
  });
}
// а должно быть так
const render = () => {
  document.body.innerHTML = users.filter((item) => {
    const itemNameUpper = item.name.toUpperCase();
    
    return !nameFilter || itemNameUpper.includes(nameFilterUpper)
  }).map(wrapItemNameInSpan).join(``);
}
Так гораздо очевиднее проблема. Если вы пока теряетесь в коротких записях рекомендую всё расписывать подробно, а не в одну строчку, так гораздо меньше шанс запутаться.  | 
	
		
 Цитата: 
	
  | 
	
		
 Не знаю... Не получается вывести на html-страницу форму фильтра. Выводится только это:  
	
fetch("users.json")
        .then(res=>res.json())
        .then(data=>{
            document.body.innerHTML = data.map((item)=>
                `
<div class="textcols-item show-modal">
<div class="trigger">
   <li style="list-style-type: none"><span class="name"><b><h3>${item.name}</h3></b></span></li>
  <br>
  <br>
   <i class="icono-iphone"></i>   ${item.phone}
  <br>
  <br>
   <i class="icono-mail"></i>   ${item.email}
   <br>
   </div>
   </div>
`).join(" ");
        })
А этот код не вывод: 
const nameFilterUpper = nameFilter.toUpperCase();
    const wrapItemNameInSpan = (item) => `<span class="name">${item.name}</span>`;
    const render = () => {
        document.body.innerHTML = users.filter((item) => {
            const itemNameUpper = item.name.toUpperCase();
            return !nameFilter || itemNameUpper.includes(nameFilterUpper)
        }).map(wrapItemNameInSpan).join(``);
    }
    fetch(`users.json`)
        .then((res) => res.json())
        .then((data) => users = data)
        .then(render);
 | 
	
		
 alena0309, всё работает: 
	
<script>
let userJsonURL = 'users.json';
let users = [];
let nameFilter = `name`;
const nameFilterUpper = nameFilter.toUpperCase();
const wrapItemNameInSpan = (item) => `<span class="name">${item.name}</span>`;
const render = () => {
  document.body.innerHTML = users.filter((item) => {
    const itemNameUpper = item.name.toUpperCase();
    return !nameFilter || itemNameUpper.includes(nameFilterUpper)
  }).map(wrapItemNameInSpan).join(``);
}
// имитация users.json
userJsonURL = 'data:,' + JSON.stringify([
  {name: 'filtered'}, 
  {name: 'Vasya-name'}, 
  {name: 'Zlatan-name'}
]);
fetch(userJsonURL)
  .then((res) => res.json())
  .then((data) => users = data)
  .then(render);
</script>
 | 
	
		
 Я, наверное, не так описала. У меня есть json. Код, который выводит на html-страницу:  
	
fetch("users.json")
        .then(res=>res.json())
        .then(data=>{
            document.body.innerHTML = data.map((item)=>
                `
<div class="textcols-item show-modal">
<div class="trigger">
   <li style="list-style-type: none"><span class="name"><b><h3>${item.name}</h3></b></span></li>
  <br>
  <br>
   <i class="icono-iphone"></i>   ${item.phone}
  <br>
  <br>
   <i class="icono-mail"></i>   ${item.email}
   <br>
   </div>
   </div>
`).join(" ");
        })
Я никак не могу додуматься, как сделать форму поиск-фильтр по странице.  | 
| Часовой пояс GMT +3, время: 12:31. |