检查数组是否具有角值

时间:2020-05-12 07:17:17

标签: javascript arrays angular typescript ecmascript-7

我必须检查任何“ cuesData”的值或长度是否大于0。 在下面的代码中,我只能检查第一个数组,而不能检查其他数组。

enter image description here

TS

checkValues(values) {
    const result = Object.values(values).every((value) => value[1].cuesData.length > 0);
    return result;
}

HTML

<div *ngIf="checkValues(values) === true">

JSON

  [
      [
        "videoData__1",
        {
          "id": 1,
          "title": "Pale Blue Dot",
          "stoppedAt": 97.834667,
          "cuesData": [
            {
              "startTime": 25.335678,
              "endTime": 35.335678,
              "description": "fqff"
            }
          ]
        }
      ],
      [
        "videoData__2",
        {
          "id": 2,
          "title": "Big Buck Bunny",
          "stoppedAt": 247.57881,
          "cuesData": []
        }
      ],
      [
        "videoData__3",
        {
          "id": 3,
          "title": "Elephants Dream",
          "stoppedAt": 404.585327,
          "cuesData": []
        }
      ]
]

2 个答案:

答案 0 :(得分:0)

您可以为此使用一些方法:

*ngIf="CheckValues(values)"

功能:

CheckValues(values : any[]){
   return values.some(v=>v[1].cuesData&&v[1].cuesData.length); //if any array has cuesData, some will return true
}

有关some的更多信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some

答案 1 :(得分:0)

更改

checkValues(values) {
    const result = Object.values(values).every((value) => value[1].cuesData.length > 0);
    return result;
}

收件人

checkValues(values){
  const result = Object.values(values).some((value) => value[1].cuesData.length > 0);
  return result;
}

工作中的闪电战: https://stackblitz.com/edit/my-angular-starter-j4yypu

这里的.every()方法将检查所有条件都应满足,而 some() 方法的工作原理是至少满足一个条件。.

没有提示数据长度的Stackblitz:https://stackblitz.com/edit/my-angular-starter-cfpxa5