在数组角度和打字稿中查找最小和最大元素

时间:2018-08-14 11:15:49

标签: arrays angular typescript angular6

你好,我有数组,我需要执行各种运算,如求和,总计,平均值。这三个都实现了,现在我需要在数组中找到最小值和最大值。我被卡在下面的是代码。

下面是TS部分

people: Array<number> = [1, 2, 3, 4, 5];
  total: number = 0;
  arrayLength: number = this.people.length;
  average: number = 0;

  sum() {
    for (var i in this.people) { this.total += this.people[i]; }
  }

  ngOnInit() {
    this.sum();
    this.average = (this.total / this.arrayLength);
  }

下面是HTML部分

<span *ngFor="let p of people" style="font-size:18px">{{p}} </span><br><br>
<button >Quantity</button> = {{arrayLength}}<Br><br>
<button >Average</button> = {{average}}<Br><br>
<button >Sum</button> <span *ngIf="sumShow"> = {{total}}</span><Br><br>

4 个答案:

答案 0 :(得分:5)

结合使用Math.maxMath.min和价差运算符。

get max() {
  return Math.max(...this.people);
}

get min() {
  return Math.min(...this.people);
}

答案 1 :(得分:4)

您可以创建一个自己的小助手类,该类可以为您执行这些操作并且可以在您的整个代码中重复使用

export class MathOps {
  array: number[];

  constructor(array: number[]) {
    this.array = array;
  }

  sum(): number {
    return this.array.reduce((a, b) => a + b, 0);
  }

  avg(): number {
    return this.sum() / this.array.length;
  }

  max(): number {
    return Math.max(...this.array);
  }

  min(): number {
    return Math.min(...this.array);
  }
}

const ops = new MathOps([1, 2, 3, 4, 5]);
console.log(ops.avg());
console.log(ops.max());
console.log(ops.min());
console.log(ops.sum());

注意:

根据用例,您将需要扩展它以缓存结果...

答案 2 :(得分:1)

为此使用class PagesController { function display() { // default controller code here // your custom code here } }

Stackblitz

上进行演示
reduce

答案 3 :(得分:1)

您可以为此使用Array.reduceMath.max()Math.min()

const people = [1,2,3,4,5];

const max = people.reduce((a, b) => Math.max(a, b));  // 5

const min = people.reduce((a, b) => Math.min(a, b));  // 1

const sum = people.reduce((a, b) => a+b, 0);  // 15

您可以在here

中找到一个有效的示例