Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 26.10.2017
Сообщений: 21

Поиск и вывод данных в объектах JSON

02.11.2017, 16:56. Показов 3075. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!

Есть данные в формате JSON следующей структуры:

JavaScript
1
2
3
4
var source = {
    "marks": [{"id":"1","name":"Марка 1"}, {"id":"2","name":"Марка 2"}, {"id":"3","name":"Марка 3"}],
    "models": [{"id":"1","bid":"1","name":"Модель 1"}, {"id":"2","bid":"2","name":"Модель 2"}, {"id":"3","bid":"3","name":"Модель 3"}]
    };
Значение свойства "bid" из "models" равно значению свойства "id" из "marks", то есть грубо говоря таким образом они между собой связаны.

Есть переменная
JavaScript
1
var finalArray
в которой хранится массив значений
JavaScript
1
["Модель 1", "Модель 2", "Модель 3"]
Подскажите пожалуйста, как по каждому значению массива из переменной
JavaScript
1
var finalArray
найти идентичное значение свойтва "name" из source.models узнать значение свойства "bid" из source.models, по значению "bid" из "models" найти значение "id" из source.marks и вывести данные, чтобы получилось что то вроде:
Модель 1 принадлежит к Марка 1
Модель 2 принадлежит к Марка 2
Модель 3 принадлежит к Марка 3
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.11.2017, 16:56
Ответы с готовыми решениями:

Вывод данных через ajax с типом данных JSON
Если я из обработчика пишу это, выведет, как и ежу понятно, 1 кнопку. ... $res = mysqli_query($db, 'SELECT `podmenu_name` FROM...

Вывод данных из JSON
Здравствуйте, уважаемые форумчане! Суть дела такая: нужно заполнить массив данными из файла JSON. Я уже часа четыре с этим делом е*усь,...

Вывод данных json
Существуют данные json,лежащие в переменной $json "meta":{ "code":200 }, "data":{ "username":"username", ...

4
 Аватар для AndrewBeletskiy
35 / 35 / 45
Регистрация: 26.10.2016
Сообщений: 85
02.11.2017, 17:11
alexanton,
JavaScript
1
2
3
4
5
finalArray.map(model=>{
    m = source.models.find(el=>el.name == model);
    mark = source.marks.find(mark=>mark.id == m.bid);
    return `${model} принадлежит к ${mark.name}`;
})
0
0 / 0 / 0
Регистрация: 26.10.2017
Сообщений: 21
02.11.2017, 22:15  [ТС]
AndrewBeletskiy, если не затруднит, помогите пожалуйста применить ваш код к моему. Приведу свой полный код с комментариями, что бы было понятнее:
есть выпадающий список (select) моделей автомобилей и обычный (ul) с некими данными:
первый:

HTML5
1
2
3
4
5
<select id="series">
<option class="fiat" value="doblo">Doblo</option>
<option class="renault" value="kangoo">Kangoo</option>
<!-- и так далее-->
</select>
второй:
HTML5
1
2
3
4
5
6
<ul id="results">
<li>...</li>
<li id="fiat-all,opel-all,m-doblo,m-astra,m-combo,m-zafira">...</li>
<li id="renault-all,m-kangoo">...</li>
<!-- и так далее-->
</ul>
суть задачи: взять из каждого <li> в <ul id="results"> все значения id, по каждому проверить существует ли <option> c таким value в <select id="series"> (то есть существует ли такая модель в списке), если не существует то добавить его, но при этом нужно узнать какой марке принадлежит модель и указать эту марку в атрибуте class="" нового <option>. Вот код, с помощью которого я это реализую:

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$( "#results > li:not(:first)").each( function( index, element) {
    var a = $( element).attr( "id"); // достаю значения id из каждого li кроме первого, который мне не нужен
    aArray = a.split(/-all|,|m-/).filter(x => x); // получаю массив значений из каждого id и убираю ненужные символы, чтобы получились "чистые" марки и модели
var source = {
      "marks": [{"id":"1","name":"Fiat"}, {"id":"2","name":"Opel"}, {"id":"3","name":"Renault"}],
      "models": [{"id":"1","bid":"1","name":"Doblo"}, {"id":"1","bid":"1","name":"Astra"}, {"id":"1","bid":"1","name":"Combo"}, {"id":"1","bid":"1","name":"Zafira"}, {"id":"1","bid":"1","name":"Kangoo"}]
    };//описал в начале первого поста
 
        var temp = [];//используя данные из переменной source получаю массив всех марок авто
    for (var i = 0; i < source.marks.length; i++) {
    temp.push(source.marks[i].name.toLowerCase())
    }
        var finalArray = $(aArray).not(temp).get();// так как мне нужны только модели - исключаю марки авто используя полученный массив temp
 
});
Вот теперь не знаю как применить ваш код (или другой способ), чтобы выполнить суть задачи, которую описал выше, а именно проверить существует ли <option> с такой моделью авто, узнать какой марке это модель принадлежит и поместить эту марку в атрибут class, а модель в value.

Первую часть задачи реализую так:

JavaScript
1
2
3
4
5
6
for (var i = 0; i < finalArray.length; i++) {
    k = finalArray[i];
    if ( $("#series option[value="+k+"]").length == 0 ){
  $("#series").append('<option value="' +k+ '">' +k.toUpperCase()+ '</option>');
}
    }
Проблема с проверкой принадлежности модели к марке
Заранее благодарен за помощь.
0
 Аватар для AndrewBeletskiy
35 / 35 / 45
Регистрация: 26.10.2016
Сообщений: 85
03.11.2017, 00:51
Лучший ответ Сообщение было отмечено alexanton как решение

Решение

alexanton, смотрите, чтобы применить моё решение вам достаточно свести то, что вы имеете к тем условиям, которые вы задали в первом посте. А именно массив finalArray, source и тд.
Потом просто берёте мой код, и он вам возвратит любую информацию, которая необходима для решения вашей задачи, в нём находится пара модель-марка, которая вам нужна, потом можете из неё искать - что есть, чего нет и добавлять
JavaScript
1
2
3
4
5
6
7
8
9
10
var res = finalArray.map(model=>{
    // m - один из элементов source.models, у которого имя совпадает, с именем модели из массива finalArray
    m = source.models.find(el=>el.name == model);
    // mark - марка, этой модели
    mark = source.marks.find(mark=>mark.id == m.bid);
    // возвращаем строку, которая говорит о связи модели с маркой
    return `${model} принадлежит к ${mark.name}`;
    // но вы можете вернуть и объект и всё что хотите, что будет необходимо для создание новых option.
})
// В итоге res - массив, в котором хранятся результаты сопоставления марки и модели(в данном случае строка)
1
0 / 0 / 0
Регистрация: 26.10.2017
Сообщений: 21
03.11.2017, 13:35  [ТС]
AndrewBeletskiy, вот с этим сведением то как раз и проблема. Подкажите пожалуйста, что нужно переделать?

Добавлено через 12 часов 36 минут
AndrewBeletskiy, свел , не учел просто, что в finalArray все символы каждого элемента массива были прописные, а в source - первый символ заглавный. Спасибо большое за помощь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.11.2017, 13:35
Помогаю со студенческими работами здесь

Вывод данных из json массива
Добрый вечер, ночь, утро, день. Есть php файл выдающий json: if (!mysql_connect(localhost, hies, root)) { exit; } ...

Вывод данных в json-файл
&lt;?php function valuta($id) { $date = date(&quot;d/m/Y&quot;); $link = &quot;http://www.cbr.ru/scripts/XML_daily.asp?date_req=$date&quot;; $str =...

Чтение JSON и вывод данных
Собственно есть файл: { &quot;result&quot;: { &quot;items&quot;: } Подскажите пожалуйста, как мне прочитать image_url, где defindex=4832...

Вывод данных из json.php
Всем привет :) прошу прощения, что в очередной раз обращаюсь, проблема в том, что не могу вывести данные из json файла. Пожалуй начну...

JSON. Вывод данных по фильтру
Доброго времени суток! Голову немного поломал, но так немного и не понял, как сделать.. В общем пример: json:{ &quot;uid&quot;: 1,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru