首页 > 解决方案 > 带有打字稿数组的数学 - Angular

问题描述

我真的很困惑如何解决这个问题:

我有一个这样的数组:

arr=["X12","Z1","Y7","Z22","X4","X8"]

我希望对元素执行数学函数,例如:

每个以“X”开头的元素都有一个固定值5,因此如果3数组中有以“X”开头的元素arr,它应该是:(fixed value of X) multiplied by (No. of "X" element occurrences inside array) = 5x3 = 15.

我尝试了类似的方法来计算编号。“X”元素的出现,但它不起作用。

var xcounter = 0;
calculate(){
          this.arr.forEach(element => {
            if(this.arr.includes("X"))
            {
              this.xcounter++; //this doesn't give me no. of X element occurrences though.
            }
          });
        }

什么是一种无杂乱的方式来做到这一点?

标签: arraysangulartypescript

解决方案


您可以尝试将数组filter()与字符串startsWith()方法一起使用。

var arr = ["X12","Z1","Y7","Z22","X4","X8"];
var valueX = 5;

var occurencesX = arr.filter(item => item.startsWith('X')).length;

console.log(occurencesX * valueX);


推荐阅读