속성 값으로 배열 객체 필터링
특정 속성을 기반으로 배열에서 객체를 효율적으로 제거하려면 다음 해결 방법을 고려하세요.
1. 내부 필터링:
배열 길이를 올바르게 줄이려면 항목을 제거한 후 i 감소를 구현하세요.
<code class="javascript">for (var i = 0; i < arrayOfObjects.length; i++) { var obj = arrayOfObjects[i]; if (listToDelete.indexOf(obj.id) !== -1) { arrayOfObjects.splice(i, 1); i--; } }
2. 요소 덮어쓰기:
선형 시간 삭제를 방지하기 위해 유지하려는 요소 덮어쓰기:
<code class="javascript">var end = 0; for (var i = 0; i < arrayOfObjects.length; i++) { var obj = arrayOfObjects[i]; if (listToDelete.indexOf(obj.id) === -1) { arrayOfObjects[end++] = obj; } } arrayOfObjects.length = end;
3. 해시 세트 최적화:
최신 런타임의 경우 해시 세트를 사용하여 조회 속도를 높입니다.
<code class="javascript">const setToDelete = new Set(listToDelete); let end = 0; for (let i = 0; i < arrayOfObjects.length; i++) { const obj = arrayOfObjects[i]; if (setToDelete.has(obj.id)) { arrayOfObjects[end++] = obj; } } arrayOfObjects.length = end;
4. 재사용 가능한 함수(선택 사항):
재사용 가능한 함수로 필터링 작업을 래핑합니다.
<code class="javascript">const filterInPlace = (array, predicate) => { let end = 0; for (let i = 0; i < array.length; i++) { const obj = array[i]; if (predicate(obj)) { array[end++] = obj; } } array.length = end; }; const toDelete = new Set(['abc', 'efg']); const arrayOfObjects = [{id: 'abc', name: 'oh'}, {id: 'efg', name: 'em'}, {id: 'hij', name: 'ge'}]; filterInPlace(arrayOfObjects, obj => !toDelete.has(obj.id)); console.log(arrayOfObjects); // [{id: 'hij', name: 'ge'}]</code>
이러한 솔루션은 지정된 속성 값을 기반으로 배열에서 객체를 효율적으로 필터링하고 제거합니다.
위 내용은 JavaScript에서 속성 값을 기준으로 배열 개체를 효율적으로 필터링하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!