配列値と等しいオブジェクトを削除する操作
P粉985686557
P粉985686557 2023-09-05 20:56:36
0
2
438
<p>オブジェクト配列と通常の配列があり、オブジェクト配列の項目が通常の配列の項目と等しい場合、それを削除したいと考えています。これは私にとって混乱を招きます。 </p> <p>これまでに試したことは次のとおりです: </p> <p> <pre class="snippet-code-js lang-js prettyprint-override"><code>var 国 = [ {ChoicesID: 1, ChoicesName : 'アフガニスタン'}, {ChoicesID: 2, ChoicesName : 'アルバニア'}, {ChoicesID: 3, ChoicesName : 'アルジェリア'}, {ChoicesID: 4, ChoicesName : 'アンゴラ'}, {ChoicesID: 5, ChoicesName : 'アルゼンチン'}, {ChoicesID: 6, ChoicesName : 'アルメニア'} ]; var 答え = ['アフガニスタン','アルバニア','アルジェリア']; var ChoicesName = new Set(countries.map(d => d.ChoicesName)); var NewCountries = [...ChoicesName, ...answer.filter(d => !ChoicesName.has(countries.find(o => o.ChoicesName === 回答)))]; console.log(NewCountries );</code></pre> </p> <p>予想される出力は次のようになります: </p> <pre class="brush:php;toolbar:false;">var NewCountries = [ {ChoicesID: 4, ChoicesName : 'アンゴラ'}, {ChoicesID: 5, ChoicesName : 'アルゼンチン'}, {ChoicesID: 6, ChoicesName : 'アルメニア'} ];</pre></p>
P粉985686557
P粉985686557

全員に返信(2)
P粉809110129

リーリー ###このような?

いいねを押す +0
P粉790187507

filter を使用し、answer に存在する場合は削除します。 O(1) ルックアップの answerSet を作成します。それ以外の場合は、includes を使用できますが、includes の時間計算量は O(m) です (m は answer 配列内の要素の数、n は countries 配列内の要素の数)

セットを使用する
O(m) O(n).O(1) = O(n) (n>m の場合)

使用インクルード
O(n).O(m) = O(nm)

リーリー
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!