ホームページ  >  に質問  >  本文

配列値と等しいオブジェクトを削除する操作

<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粉985686557P粉985686557410日前446

全員に返信(2)返信します

  • P粉809110129

    P粉8091101292023-09-06 17:33:17

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

    返事
    0
  • P粉790187507

    P粉7901875072023-09-06 09:46:39

    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
  • キャンセル返事