我的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中重复值
答案 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);