【解決方法】こんにちは、配列の下の両方を比較しようとしていますが、条件が満たされていません


JavaScript
var personHrns:any[] = personnel?.map((item: any) => { return item.Person?.hrn ?? item.TbdRole?.hrn });
var costHrns:any[] = costshare?.map((item: any) => { return item.Person.hrn ?? item.TbdPerson?.hrn });
if(costHrns===personHrns)
{
    console.log("true");
}

私が試したこと:

データは次のようなものです:-

personHrns (3) ['hrn:hrs:persons:56', 'hrn:hrs:lists:FT', 'hrn:hrs:persons:171']
costHrns ['hrn:hrs:persons:56']

解決策 1

2 つの配列には異なる数の値が含まれているため、明らかに互いに等しくありません。

また、まったく同じ値が含まれていたとしても、Javascript は等値演算子を配列に適用するときに参照の等値のみを考慮します。 まったく同じ値を含む 2 つの異なる配列は、等しいとは見なされません。

2 つの配列が等しいかどうかを適切にテストするには、それらが同じ長さであり、各値が等しいことをテストする必要があります。

JavaScript
function arrayEquals(a, b) {
  return Array.isArray(a) &&
    Array.isArray(b) &&
    a.length === b.length &&
    a.every((val, index) => val === b[index]);
}
JavaScript
if (arrayEquals(costHrns, personHrns)) {
    console.log("true");
}

しかし、私が言ったように、配列には異なる数の値が含まれているため、それは明らかに機能しません。

コードをデバッグして、ソース配列に含まれているはずのデータが含まれていない理由を調べる必要があります。 他の誰もあなたのためにそれを行うことはできません.

コメント

タイトルとURLをコピーしました