如何删除数组Angular 2中的重复值

时间:2017-04-05 13:08:48

标签: arrays angular checkbox multidimensional-array

我有复选框(用户选择的值,选中)。因此,我需要编辑此复选框并将所有选定的值放入数组并发送到发布。

HTML

<div *ngFor="let item of officeLIST">
  <div *ngIf ="item.officeID== userdata.officeID">
       <input #office type="checkbox" id="office" name="office" class="form-control" value="{{item.officeName}}" checked (click)="officeSelection($event,$event.target.value)" > {{(item.officeName== "" ? "--No data--" : item.officeName)}} 
 </div>
  <div *ngIf ="item.officeID!= userData.officeID">
     <input #office type="checkbox" id="office" name="office" class="form-control" value="{{item.officeName}}" (click)="officeSelection($event,$event.target.value)"> {{(item.officeName== "" ? "--No data--" : item.officeName)}}
 </div>
</div>
 <button type="button" class="btn btn-primary"(click)="updateOffice(userData.officeID)"> Save </button>

点击功能(添加所选值并删除未选择的值)

 officeSelection(event: any, value) {        

        if (event.target.checked === true)
        {
               this.officeArray.push(value);
        } 
        else {
            this.officeArray.splice(this.officeArray.indexOf(value), 1);

        }
    }

更新功能

updateOfficeDetail(officeid) {

if(officeid= 1)
{    
         this.officeArray.push('stars dept');
}   
else if(officeid= 2)
{            

         this.officeArray.push('moon dept');
}
else
{          
     this.officeArray.push('Sun dept');

} 

}

问题 如果我更新数据而不更改复选框的当前值,例如:sun dept,这个 sun dept 推送 officeArray
但如果我想再次通过编辑复选框来更新数据(选择另一个值),那么之前选择的值和当前选中的值将被推入此officeArray
如果用户没有编辑复选框(只进行当前选定的值)&gt;&gt;&gt;&gt; officeArray看起来像这样

  

[&#34;太阳&#34;]
  如果用户尝试通过再单击一个复选框来更新复选框,则数组将如下所示
  [&#34;太阳&#34;&#34;月亮&#34;&#34;太阳&#34;]

我只想在officeArray中[&#34; sun&#34;,&#34; moon&#34;]。我应该删除?还是清楚什么?

我尝试做了一些类似于我的研究和很多问题。但不知怎的,所有的解决方案都不适合我。任何想法?

谢谢

2 个答案:

答案 0 :(得分:1)

function y = H(x) if (x > 0) y = 1 else y = 0 endif endfunction function y = psi(s) t = 200 phiabs = 500 K = 1000 n0 = 1000 y = -n0 * e .^ (-(s - phiabs) / t) * H(s - phiabs) - K * H(s) * H(phiabs - s) endfunction 方法中的if表达式中

updateOfficeDetail

而不是

if(officeid === 1)

我建议你使用if(officeid= 1) 而不是Array:

Set

}

答案 1 :(得分:1)

我建议使用HashMap而不是数组:

Map<String,String> officeMap = new HashMap<>();
officeMap.put(index, value);