Operasi untuk mengalih keluar objek yang sama dengan nilai tatasusunan
P粉985686557
2023-09-05 20:56:36
<p>Saya mempunyai tatasusunan objek dan tatasusunan biasa, dan jika item dalam tatasusunan objek adalah sama dengan item dalam tatasusunan biasa, saya mahu mengalih keluarnya. Ini mengelirukan saya. </p>
<p>Inilah perkara yang telah saya cuba setakat ini: </p>
<p>
<pre class="snippet-code-js lang-js prettyprint-override"><code>var negara =
[
{ChoicesID: 1, ChoicesName : 'afghanistan'},
{ChoicesID: 2, ChoicesName : 'albania'},
{ChoicesID: 3, ChoicesName : 'algeria'},
{ChoicesID: 4, ChoicesName : 'angola'},
{ChoicesID: 5, ChoicesName : 'argentina'},
{ChoicesID: 6, ChoicesName : 'armenia'}
];
var answer = ['afghanistan','albania','algeria'];
var ChoicesName = new Set(countries.map(d => d.ChoicesName));
var NewCountries = [...ChoicesName, ...answer.filter(d => !ChoicesName.has(countries.find(o => o.ChoicesName === jawapan)))];
console.log(Negara Baru );</code></pre>
</p>
<p>Keluaran yang dijangkakan sepatutnya kelihatan seperti ini: </p>
<pre class="brush:php;toolbar:false;">var NewCountries =
[
{ChoicesID: 4, ChoicesName : 'angola'},
{ChoicesID: 5, ChoicesName : 'argentina'},
{ChoicesID: 6, ChoicesName : 'armenia'}
];</pre></p>
Macam ini?
Gunakan
filter
并删除如果answer
中存在它。创建一个answerSet
以进行 O(1) 的查找,否则可以使用includes
,但includes
的时间复杂度为 O(m)(其中 m 是answer
数组中的元素数量,n 是countries
bilangan elemen dalam tatasusunan)Set guna
O(m) + O(n).O(1) = O(n) (diberi n>m)
Penggunaan termasuk
O(n).O(m) = O(nm)