Результат анализа переменной JSON - PullRequest
0 голосов
/ 15 марта 2019

У меня есть JSON, который я запрашиваю с помощью xhr. Объекты (персона) содержат пару ключ-значение под названием «serviceLevel», которую я должен разделить.

Когда я складываю это в переменную (службы) и записываю это так:

let main = document.getElementsByTagName('main');

getXHR("GET", './db/orga.json', (success) => {
    format(success)
}, (error) => {
    console.error(error)
});

function format() {
    let people = arguments[0];
    for (let i in people) {
        let person = people[i];
        let services = person.serviceLevel.split(".");
        console.log(services);
		console.log(person.serviceLevel.split("."));

        let idCard = document.createElement('div');
        idCard.id = person.firstName + person.familyName;
        idCard.classList.add('person');
        idCard.innerHTML = "<div class=\"item nom\"><span class=\"prenom\">" + person.firstName + "</span><span class=\"famille\">" + person.familyName + "</span></div>";
        idCard.innerHTML += "<span class=\"job\">" + person.jobTitle_1 + "</span>";
        idCard.innerHTML += "<span class=\"mail\"><a href=\"mailto:" + person.mail + "\">" + person.mail + "</span>";
        idCard.innerHTML += "<span class=\"tel\"><a href=\"tel:" + person.phone_1 + "\">" + person.phone_1 + "</span>";
        idCard.innerHTML += "<span class=\"tel\"><a href=\"tel:" + person.mobile + "\">" + person.mobile + "</span>";

        for (let j in services) {
            let serviceElement = document.getElementById(services[j]);
            if (!serviceElement) {
                let serviceElement = document.createElement('div');
                serviceElement.id = services[j];
                serviceElement.classList.add('n' + j, "service");
                serviceElement.innerHTML = "<span class=\"title\">" + services[j] + "</span>";

                if (j == 0) {
                    if (services[services.length - 1] = j) {
                        serviceElement.appendChild(idCard);
	                    main[0].appendChild(serviceElement);
                    }
                } else {
                    let parent = services[j - 1],
                        parentService = document.getElementById(parent);
                    if (services[services.length - 1] = j) {
                        serviceElement.appendChild(idCard);
                    }
                    parentService.appendChild(serviceElement);
                }
            } else {
                serviceElement.appendChild(idCard);
            }
        }
    }
}
const data = [{
  "Tri": "blablablabla, CSMSI.SAFS, n, XXXX, YYYY",
  "Department": "The best department",
  "serviceLevel": "CSMSI.SAFS",
  "organisationLevel": "blablablabla",
  "rang": "n",
  "familyName": "XXXX",
  "firstName": "YYYY",
  "jobTitle_2": "Directeur",
  "jobTitle_1": "Directeur",
  "phone_1": "nn nn nn nn nn",
  "phone_2": "",
  "mobile": "nn nn nn nn nn",
  "mail": "xxxx.yyyy@zzzz.fr",
  "location": "france"
}];

format(data);

Результаты разные:

(2) ["CSMSI", "SAFS"]
0: "CSMSI"
1: "SAFS"
length: 2

(2) ["CSMSI", "SAFS"]
0: "CSMSI"
1: "1"
length: 2

JavaScript console screenshot

Как мы видим, содержание «сервисов» хорошее, но когда я расширяю дерево, значение второго ключа равно «1» ... что является проблемой. Есть ли способ изменить это?

1 Ответ

0 голосов
/ 18 марта 2019

когда я использую цикл for с "classic" (i = 0; i

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...