ng用于查找第一个,最后一个和总索引

时间:2018-11-02 17:09:56

标签: angular

我的json就是这样     [{score:9},{score:8.5}]

我只想显示第一和最后得分。如果我有两个以上的对象,下面的工作很好。

<!-- first score -->
<div class=""  *ngFor="let fs of score  ; index as j; first as isFirst">
                    <div class="row m-row--no-padding align-items-center" *ngIf="isFirst">
                  <div> {{fs.score}}  <---- first Div
                  </div>

<!-- last score -->
<div class="" *ngFor="let ls of score  ; index as i; last as isLast">
                  <div class="row m-row--no-padding align-items-center"  *ngIf="isLast">
                  <div> {{ls.score}}   <---- last Div
                  </div>

如果我的json只有一个对象

[{score: 9}]

在第一个和最后一个div中重复相同的值。这是合乎逻辑的。但我想避免重复。有没有一种方法可以找到总索引,然后首先打印和最后打印或其他任何方式

基本上只希望在只有一个对象的情况下避免在div中重复值

4 个答案:

答案 0 :(得分:1)

您的方法远非高效。无论集合的大小如何,您都将迭代其所有元素,尽管您始终知道数组中的哪些位置对您来说很有趣。此外,您使用当前模板执行两次

为什么不简单地预先对这两个值进行查找/提取呢? IMO更好的方法是简单地执行以下操作:

interface Foo {}

private _entries: Foo[] = [];
// set-get approach used in order to force the update of the direct references 
// whenever the collection value is set
set entries(v: Foo[])
{
 this._entries = [...v];
 this.updateElements(v);
}
get entries(){return this._entries;}

firstElement: Foo;
lastElement: Foo;

private updateElements(v: Foo[]){
   const length = v.length;
   if(length  === 0){
     this.firstElement = null;
     this.lastElement = null;
   }else{
     this.firstElement = v[0];
     this.lastElement = v[length -  1];
   }
}

<div class="row m-row--no-padding align-items-center"  *ngIf="firstElement">
   <div> {{firstElement.score}}</div>
</div>
<div class="row m-row--no-padding align-items-center"  *ngIf="lastElement && lastElement 
 !== firstElement">
   <div> {{lastElement.score}}</div>
</div>

答案 1 :(得分:0)

检查“最后一个”的索引

*ngIf=“isLast && i !== 0”

答案 2 :(得分:0)

尝试:

<!-- first score -->
<div class=""  *ngFor="let fs of score  ; index as j; first as isFirst">
                    <div class="row m-row--no-padding align-items-center" *ngIf="isFirst">
                  <div> {{fs.score}}  
                  </div>

<!-- last score -->
<div class="" *ngFor="let ls of score  ; index as i; last as isLast">
                  <div class="row m-row--no-padding align-items-center"  *ngIf="isLast && i!==0">
                  <div> {{ls.score}} 
                  </div>

答案 3 :(得分:0)

如果要检查JSON数组的第一个和最后一个索引,则只能使用一个div。请尝试以下代码。

data have;
input id  term grade $ ;
datalines;
113 2 B
113 1 A
113 3 C
111 2 B
111 1 A
111 3 C
112 1 B
112 2 A
112 3 C
;

proc sql;
create table want as 
select * from 
have
group by id
having grade = min(grade);