#javascript #jquery
Вопрос:
У меня есть этот массив данных, который я сортирую по фамилии
JSON.parse(data).sort(function (a, b) { return a.user_last.localeCompare(b.user_last); });
Вот образец, который я получаю после сортировки:
{"title": "Dr.","first_name": "Pennie","last_name": "Abramson"}, {"title": "Prof.","first_name": "David","last_name": "Amob"}, {"title": "Prof.","first_name": "Dash","last_name": "Arnon"}, {"title": "Prof.","first_name": "Haim","last_name": "Bling"}, {"title": "Prof.","first_name": "Wow","last_name": "Bold"}, {"title": "Dr.","first_name": "Ron","last_name": "bondel"}, {"title": "Dr.","first_name": "katty","last_name": "Contor"}, {"title": "Prof.","first_name": "Ranny","last_name": "Cometon"}, {"title": "Dr.","first_name": "Roven","last_name": "Co"}
Я хотел бы упорядочить имена в списке под заголовком
Название — все имена фамилий по значению last_name, которое начинается с
Title — B все имена фамилий по значению last_name, которое начинается с B
Название — C все имена фамилий по значению фамилия, которое начинается с C
и так далее…
это код, который у меня сейчас есть.. проблема в том, что я получаю заголовок над каждым именем
$.each(JSON.parse(data), function (i, item) { var letter = JSON.parse(data); console.log(JSON.parse(data)); if(item.socket_id !== '0' amp;amp; item.user_last.charAt(0) == item.user_last[0].charAt(0) ){ $("#watching-window").append('lt;div class="letter"gt;' item.user_last[0].charAt(0) 'lt;/divgt;lt;ulgt;lt;ligt;' item.user_title ' ' item.user_first ' ' item.user_last 'lt;ligt;lt;/ulgt;').fadeIn(400) } });
как я могу правильно его заказать
Пример вывода
lt;div class="watching-window" id="watching-window"gt;lt;div class="letter"gt;Alt;/divgt;lt;ulgt;lt;ligt;Mrs. Pennie Abramsonlt;/ligt;lt;ligt;lt;/ligt;lt;/ulgt;lt;div class="letter"gt;Alt;/divgt;lt;ulgt;lt;ligt;Mr. Gary M. Abramsonlt;/ligt;lt;ligt;lt;/ligt;lt;/ulgt;lt;div class="letter"gt;Alt;/divgt;lt;ulgt;lt;ligt;Mr. Alfredo Acharlt;/ligt;lt;ligt;lt;/ligt;lt;/ulgt;lt;div class="letter"gt;Alt;/divgt;lt;ulgt;lt;ligt;Dr. Carole Ackermannlt;/ligt;lt;ligt;lt;/ligt;lt;/ulgt;lt;div class="letter"gt;Alt;/divgt;lt;ulgt;lt;ligt;Mrs. Karen Aiachlt;/ligt;lt;ligt;lt;/ligt;lt;/ulgt;lt;div class="letter"gt;Alt;/divgt;lt;ulgt;lt;ligt;Dr. Mark Alexanderlt;/ligt;lt;ligt;lt;/ligt;lt;/ulgt;lt;div class="letter"gt;Alt;/divgt;lt;ulgt;lt;ligt;Lord David Alliancelt;/ligt;lt;ligt;lt;/ligt;lt;/ulgt;lt;div class="letter"gt;Alt;/divgt;lt;ulgt;lt;ligt;Mr. Ilan Artzilt;/ligt;lt;ligt;lt;/ligt;lt;/ulgt;lt;div class="letter"gt;Blt;/divgt;lt;ulgt;lt;ligt;Prof. Paolo Barbantilt;/ligt;lt;ligt;lt;/ligt;lt;/ulgt;lt;div class="letter"gt;Blt;/divgt;lt;ulgt;lt;ligt;Mr. Stephen Barclaylt;/ligt;lt;ligt;lt;/ligt;lt;/ulgt;lt;div class="letter"gt;Blt;/divgt;lt;ulgt;lt;ligt;Prof. Allen J. Bardlt;/ligt;lt;ligt;lt;/ligt;lt;/ulgt;lt;div class="letter"gt;Blt;/divgt;lt;ulgt;lt;ligt;Prof. Istvan Barnalt;/ligt;lt;ligt;lt;/ligt;lt;/ulgt;lt;div class="letter"gt;Blt;/divgt;lt;ulgt;lt;ligt;Dr. Carolyn Barshalllt;/ligt;lt;ligt;lt;/ligt;lt;/ulgt;lt;div class="letter"gt;slt;/divgt;lt;ulgt;lt;ligt;sdfg 345 sdfglt;/ligt;lt;ligt;lt;/ligt;lt;/ulgt;lt;div class="letter"gt;Dlt;/divgt;lt;ulgt;lt;ligt;Mr Demo Demolt;/ligt;lt;ligt;lt;/ligt;lt;/ulgt;lt;/divgt;
Комментарии:
1. Не могли бы вы показать пример вывода?
2. я добавил пример вывода в конце
Ответ №1:
Вы можете сохранить букву, и если значение ltter меняется, добавьте новую строку письма.
const data = [{ title: "Dr.", first_name: "Pennie", last_name: "Abramson" }, { title: "Prof.", first_name: "David", last_name: "Amob" }, { title: "Prof.", first_name: "Dash", last_name: "Arnon" }, { title: "Prof.", first_name: "Haim", last_name: "Bling" }, { title: "Prof.", first_name: "Wow", last_name: "Bold" }, { title: "Dr.", first_name: "Ron", last_name: "bondel" }, { title: "Dr.", first_name: "katty", last_name: "Contor" }, { title: "Prof.", first_name: "Ranny", last_name: "Cometon" }, { title: "Dr.", first_name: "Roven", last_name: "Co" }]; data.forEach(((letter, ul) =gt; o =gt; { if (letter !== o.last_name[0].toUpperCase()) { letter = o.last_name[0].toUpperCase(); ul = document.createElement('ul'); document.body.appendChild(document.createTextNode('Letter ' letter)); document.body.appendChild(ul); } const li = document.createElement('li'); li.innerHTML = o.last_name; ul.appendChild(li); })());
.as-console-wrapper { max-height: 100% !important; top: 0; }
Комментарии:
1. Спасибо вам за помощь! Работает Отлично!