web-dev-qa-db-ja.com

角度を使用して配列内のオブジェクトのインデックスを取得するにはどうすればよいですか?

配列のこの部分を削除できるように、配列にオブジェクトのインデックスが必要です。私はこれを使ってみました:

var index = this.urenRegistratie.indexOf(newDatum);

しかし、それは-1を返し続け、なぜこれが起こっているのかわかりません。

これは私が持っているコードの一部です。 htmlのフォームからデータを取得し、それを配列に配置します。これで、ifステートメントの準備ができて(exisitingDatum)、コードがそこにある必要があります。誰かが私を少し助けてくれますか?

 store(newValue:number, newDatum, newAanwezig, newComment){
    const existingDatum = this.urenRegistratie.find(billable => {
      return billable.datum === newDatum;
      return
    });

    if (!existingDatum) {
        let billable = new BillableHours();
        billable.datum = newDatum;
        billable.hours = +newValue;
        billable.aanwezig = newAanwezig;
        billable.comment = newComment;

        if(billable.aanwezig == "Aanwezig" && billable.hours !== 0 && billable.datum !== null) {
          this.urenRegistratie.Push(billable);
        }
    }

    if(existingDatum) {

    }

  }
7
straatrakker

簡単でエレガントな解決策は、 lo。 ライブラリを使用して詳細な比較を実行する _。isEqual を使用することです。

Npmパッケージ- https://www.npmjs.com/package/lodash

const a = [
   { firstName: "Adam", LastName: "Howard" },
   { firstName: "Ben", LastName: "Skeet" },
   { firstName: "Joseph", LastName: "Skeet" }
];
const find =  { firstName: "Joseph", LastName: "Skeet" }

index = a.findIndex(x => _.isEqual(x, find));

console.log(index);
0
Amit Kumar