COM_javascript スキルで JavaScript 配列サイズを取得するコード
IDispatch 型のポインターは、配列オブジェクトが実際には JavaScript の組み込み配列オブジェクトであることを示します。JavaScript 側では、GetIDsOfNames を通じて配列のサイズを取得できます。関数と Invoke 関数の長さにより、配列の内容を動的に可変にすることができます。
// 配列の長さを取得します
BSTR bstrLength = L "長さ";
DISPID dispid;
hr = lpDispatch->GetIDsOfNames(IID_NULL, &bstrLength, 1,
LOCALE_USER_DEFAULT, &dispid); 🎜>{
CComVariant varResult;
hr = lpDispatch->Invoke(dispid, IID_NULL, LOCALE_SYSTEM_DEFAULT,
DISPATCH_PROPERTYGET, &noArgs, &varResult, NULL, NULL); vt == VT_I4 )
{
nLength = varResult.intVal;
}
}
このとき、nLength は配列の長さを取得します。
JavaScript の配列はオブジェクトであり、配列の内容は動的に作成されるオブジェクトの属性であり、これらの属性のクエリ メソッドは長さのクエリ メソッドに似ています。 GetIDsOfNames 関数と Invoke 関数も同様です。主な関数は名前です。配列内の要素オブジェクトの属性の名前は動的に作成されます。つまり、ここでは属性名を取得します。次のように添え字を付けて取得することもできます:
コードをコピー
LOCALE_USER_DEFAULT, &dispid);
if (FAILED(hr) )
{
続行; >CComVariant varResult;
hr = lpDispatch->Invoke (dispid, IID_NULL, LOCALE_SYSTEM_DEFAULT,
DISPATCH_PROPERTYGET, &noArgs, &varResult, NULL, NULL);
VARTYPE vt = varResult.vt; vt == VT_DISPATCH )
{
InvokeArray( varResult );
}
hr = varResult.ChangeType(VT_BSTR)
CComBSTR = varResult.bstrVal; >}
したがって、これら 2 つの属性メソッドを呼び出すことにより、すべての JavaScript 配列オブジェクトを COM インターフェイスで容易に実行できます。
これにはどのような利点がありますか? 多くのオンライン リソースを見ると、そのほとんどが SAFEARRAY を使用して構造体を処理し、COM インターフェイスに渡していることがわかりましたが、SAFEARRAY は MIDL と JavaScript ではサポートされていません。オブジェクト自体はこのコンテンツをサポートしていません。SAFEARRAY モードで動作するには、VBScript と JavaScript を切り替える必要があります。これにより、プログラムの作成が困難になり、保守担当者が混乱する可能性があります。
JavaScript を直接使用して配列を渡し、SAFEARRAY を通じて構造を統合する必要はありません。同時に、JavaScript のすべてのオブジェクト (要素) は独自の型情報を持っているため、JavaScript の配列は C の構造体の最良の代替 (転送メソッド) となります。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











foreach ループを使用して PHP 配列から重複要素を削除する方法は次のとおりです。配列を走査し、要素がすでに存在し、現在の位置が最初に出現しない場合は、要素を削除します。たとえば、データベース クエリの結果に重複レコードがある場合、このメソッドを使用してそれらを削除し、重複レコードのない結果を取得できます。

PHP で配列をディープ コピーする方法には、json_decode と json_encode を使用した JSON エンコードとデコードが含まれます。 array_map と clone を使用して、キーと値のディープ コピーを作成します。シリアル化と逆シリアル化には、serialize と unserialize を使用します。

PHP の配列キー値の反転メソッドのパフォーマンスを比較すると、array_flip() 関数は、大規模な配列 (100 万要素以上) では for ループよりもパフォーマンスが良く、所要時間が短いことがわかります。キー値を手動で反転する for ループ方式は、比較的長い時間がかかります。

多次元配列のソートは、単一列のソートとネストされたソートに分類できます。単一列のソートでは、array_multisort() 関数を使用して列ごとにソートできますが、ネストされたソートでは、配列を走査してソートするための再帰関数が必要です。具体的な例としては、製品名による並べ替えや、売上数量や価格による化合物の並べ替えなどがあります。

PHP の array_group_by 関数は、キーまたはクロージャ関数に基づいて配列内の要素をグループ化し、キーがグループ名、値がグループに属する要素の配列である連想配列を返すことができます。

PHP で配列のディープ コピーを実行するためのベスト プラクティスは、 json_decode(json_encode($arr)) を使用して配列を JSON 文字列に変換し、それから配列に戻すことです。 unserialize(serialize($arr)) を使用して配列を文字列にシリアル化し、それを新しい配列に逆シリアル化します。 RecursiveIteratorIterator を使用して、多次元配列を再帰的に走査します。

PHP の array_group() 関数を使用すると、指定したキーで配列をグループ化し、重複する要素を見つけることができます。この関数は次の手順で動作します。 key_callback を使用してグループ化キーを指定します。必要に応じて、value_callback を使用してグループ化値を決定します。グループ化された要素をカウントし、重複を特定します。したがって、array_group() 関数は、重複する要素を見つけて処理するのに非常に役立ちます。

PHP 配列のマージおよび重複排除アルゴリズムは、元の配列を小さなブロックに分割して並列処理する並列ソリューションを提供し、メイン プロセスは重複排除するブロックの結果をマージします。アルゴリズムのステップ: 元の配列を均等に割り当てられた小さなブロックに分割します。重複排除のために各ブロックを並行して処理します。ブロックの結果をマージし、再度重複排除します。
