배열 값과 동일한 객체를 제거하는 작업
P粉985686557
2023-09-05 20:56:36
<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 : 'algeria'},
{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>
으아악
이렇게?
배열의 요소 수를
filter
并删除如果answer
中存在它。创建一个answerSet
以进行 O(1) 的查找,否则可以使用includes
,但includes
的时间复杂度为 O(m)(其中 m 是answer
数组中的元素数量,n 是countries
사용하세요.세트 사용
O(m) + O(n).O(1) = O(n) (n>m으로 가정)
사용 포함
O(n).O(m) = O(nm)