为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

临摹微笑 2022-06-05 16:58:36
我一直在想一些我认为应该很容易的事情,但我似乎无法解决。我有一个数组,其中包含不同类型的文本,这些文本未排序。因此,我想根据文本类型的优先级仅可视化其中一个。以下是数据示例:所以我从模板触发一个函数:<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”文本。有人可以给我一个提示我做错了什么吗?我将不胜感激!
查看完整描述

2 回答

?
达令说

TA贡献1821条经验 获得超6个赞

了解模板代码的作用很重要:它迭代并elements.Event.Texts调用textSelector每个元素。只要返回 true,就会创建一个元素。textSelectorp


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


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

}

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


查看完整回答
反对 回复 2022-06-05
?
精慕HU

TA贡献1845条经验 获得超8个赞

试试这个。它可能有效


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;

    }

  }


查看完整回答
反对 回复 2022-06-05
  • 2 回答
  • 0 关注
  • 111 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号