Удалить повторяющиеся значения из объекта массива - PullRequest
0 голосов
/ 06 февраля 2020

У меня есть массив объектов для загрузки некоторых задач для пользователя.

taskInfo =  [
    {name: 'John Doe', mail:'john@test.com', tasks: [
            {name:'Task1', priority: 1, groupname: 'gName'},
            {name:'Task2', priority: 1, groupname: 'gName1'},
            {name:'Task3', priority: 1, groupname: 'gName2'},
        ]
    },
    {name: 'Susan Doe', mail:'susan@test.com', tasks: [
            {name:'Task4', priority: 1, groupname: 'gName'},
            {name:'Task5', priority: 2, groupname: 'gName2'},
            {name:'Task6', priority: 3, groupname: 'gName2'},
        ]
    }
]

на основе вышеуказанного объекта, мне нужно создать значение Dynami c на странице HTML, ниже l oop для создания макета

for(var j=0; j < taskInfo[i].tasks.length; j++)
        {
                var flow = taskInfo[i].tasks[j].parity;
                console.log(flow);
                var par = document.createElement("div");            
                par.setAttribute("id","Priority"+flow);
                cont.appendChild(par);
                }
        }

Все работают нормально, но не могут избежать повторения значения приоритета.

<div id="priority1">..</div>
<div id="priority1">..</div>
<div id="priority1">..</div>

Я хочу один div вместо этих повторений. помогите мне решить это. я новичок в JavaScript.

Ответы [ 2 ]

0 голосов
/ 06 февраля 2020

Простое решение - сохранить четность в массиве при получении и просто проверить, не существует ли в массиве пропуск четности.

var parityArray = [];
for(var j=0; j < taskInfo[i].tasks.length; j++)
    {
            var flow = taskInfo[i].tasks[j].parity;
            if(!parityArray.includes(flow)){
                var par = document.createElement("div");            
                par.setAttribute("id","Priority"+flow);
                cont.appendChild(par);
                parityArray.push(flow);
              }
            }
    }
0 голосов
/ 06 февраля 2020
...
var tmpList = []
for(var j=0; j < taskInfo[i].tasks.length; j++) {
    var flow = taskInfo[i].tasks[j].priority;
    console.log(flow);
    if (tmpList.indexOf(flow) < 0) { // if flow is not in tmpList
      tmpList.push(flow)
    }
  }
for(var k=0; k < tmpList.length; k++) {
  var par = document.createElement("div");            
  par.setAttribute("id","Priority"+tmpList[k]);
  cont.appendChild(par);
}
...

Как насчет использования списка для дубликатов чеков?

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