从数组对象中删除重复值

时间:2020-02-06 03:14:32

标签: javascript arrays object

我有一个对象数组,可以为用户加载一些任务。

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'},
        ]
    }
]

基于上述对象,我必须在HTML页面中创建一个动态值,以下是创建布局的循环

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 :(得分:0)

...
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);
}
...

如何使用列表进行重复检查?

答案 1 :(得分:0)

一个简单的解决方案是在收到 parity 时将其保存在一个数组中,然后检查该数组是否已经具有奇偶校验跳过。

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);
              }
            }
    }