如何从角度6中的数组中获取最近的数字

时间:2019-06-22 16:20:05

标签: html angular typescript

我有一个数组,我们需要单击一个按钮来获取最接近的上一个ID,因为当我获得最接近的下一个的正确值时,但是对于上一个,我直接获取了第一个ID而不是先前的ID。我, 对于最近的下一个我正在使用(this.arrayVal.find(id => x

app.component.html

<button (click) ="getPrev()">Previous Value</button>

app.component.ts

declare var require: any;
import { Component } from '@angular/core';
import { OnInit } from '@angular/core';
@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent{
    arrayVal:any;
    currentVal : any;
  title = 'projectchart';
  public array = [{"id":1},{"id":3},{"id":5}];


  getPrev(x){
     x = 5;
     this.arrayVal= this.array; 
     let number = (this.arrayVal.find(id => id < x) || {});
     console.log(number);
  }
}

1 个答案:

答案 0 :(得分:0)

尝试此功能。使用findIndex可以找到您单击的元素。然后保存该索引并从中减去-1以获得上一项。

  getPrev(idToFind) {
    const index = this.array.findIndex((obj: any) => obj.id === idToFind);
    console.log('click index is: ', index);
    if (index !== -1 && index > 0) {
      let number = this.array[index - 1].id;
      console.log('prev id is: ', number);
    } else {
      console.log('no prev id');
    }
  }

Stackblitz.