2 つの配列があり、各配列には 2 つのフィールドがあります (たとえば、「商品」と「価格」)。
以下は、私の配列の 1 つでの get-member の結果です (実際には、両方の配列が同じ構造を持っています)。
TypeName: System.Management.Automation.PSCustomObject
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
item NoteProperty System.String field1=computer
price NoteProperty System.String field2=2000
配列 $shopB にアイテムが見つからない場合、配列 $shopA でアイテムを見つける必要があります。不足しているアイテムを見つけるために 2 つのループを使用しています。
$missing = @()
foreach ($itemA in $shopA) {
$found = 0
foreach ($itemB in $shopB) {
if ($itemB.item -eq $itemA.item) {
$found = 1
}
}
if ($found = 0) {
$missing += $itemA
}
}
この方法は私にとってはうまくいきますが、私の2つの配列は非常に大きく、配列全体をループするよりも速い方法が必要です...
私はこれを行うためのより良い方法を見つけてきました.compare-objectはほとんど仕事をしますが、すべての例は一次元配列でのみ機能するようです.
ありがとう