gpt4 book ai didi

javascript - 过滤数组值 - return 语句不会结束函数

转载 作者:行者123 更新时间:2023-12-02 21:18:08 25 4
gpt4 key购买 nike

我一直在绞尽脑汁地思考一些我认为应该很容易的事情,但我似乎无法解决。

我有一个包含不同类型文本的数组,这些文本未排序。

因此,我只想根据文本类型的优先级来可视化其中一个。

以下是数据示例:

Texts Array

所以我从模板触发一个函数:

<ng-container *ngFor="let text of elements.Event.Texts">
<p *ngIf="textSelector(text)">{{bestText}}</p>
</ng-container>

这是函数:

textSelector(item: any) {

if (item.Type === 'VeryShort') {
this.bestText = item.Value;
return true;
} else {
if (item.Type === 'Short') {
this.bestText = item.Value;
return true;
} else {
if (item.Type === 'Medium') {
this.bestText = item.Value;
return true;
} else {
return false;
}
}
}

我只需要导出一个文本 - 按“文本类型”优先级。

就我而言,对于屏幕截图中的示例,我同时收到“Short”和“VeryShort”文本。

有人可以告诉我我做错了什么吗?我将不胜感激!

最诚挚的问候!

最佳答案

了解模板代码的作用非常重要:它会迭代 elements.Event.Texts 并为每个元素调用 textSelector。每当 textSelector 返回 true 时,就会创建一个 p 元素。

我建议采用不同的方法。仅调用该函数一次,因为您只需要一个值。

 <p *ngIf="textSelector(elements.Event.Texts)">{{bestText}}</p>

这就是我编写该函数的方式。我会使用一个数组来设置优先级,这样它更易于维护。

const order = ["VeryShort", "Short", "Medium"];

textSelector(items: any[]) {
let bestItem;
for (const item of items) {
if (item.Type === order[0]) {
this.bestText = item.Value;
return true;
}
if (!bestItem) {
bestItem = item;
} else if (order.indexOf(item.Type) < order.indexOf(bestItem.Type)) {
bestItem = item;
}
}
if (!bestItem) {
return false;
}
this.bestText = bestItem.Value;
return true;
}

如果您有任何问题或需要解释,请告诉我。

关于javascript - 过滤数组值 - return 语句不会结束函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60915616/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com