두 배열간에 상호 배타적 인 값을 0으로 채우는 고성능 방법을 찾고 있습니다. 이 데이터는 모든 x 값에 대한 항목이 있어야하는 JS 차트 용입니다.자바 스크립트 : 배열 사이에 누락 값 채우기
하기 전에 :
obj1 = [{x:1, y:1}, {x:3, y:2}];
obj2 = [{x:2, y:2}, {x:4, y:4}];
후 : 예는 더 나은이 설명 할 수 내가 루프 중첩 사용
obj1 = [{x:1, y:1}, {x: 2, y:0}, {x:3, y:2}, {x:4, y:0}];
obj2 = [{x:1, y:0}, {x: 2, y:2}, {x:3, y:0}, {x:4, y:4}];
이 나 자신을 할 수 있지만 & 항목이 증가 개체의 수, 벽 등 시간이 용납 할 수 없을 정도로 높습니다. 수천 개의 항목으로 채워지지 않는 데이터 세트에서 벽 시간은 10 초를 넘었습니다.
jQuery와 밑줄과 같은 일부 JS 라이브러리를 살펴 봤지만 더 나은 기능을 수행하는 것은 분명하지 않습니다.
업데이트 : 모든 답변 주셔서 감사합니다. 나는 그것들을 시험해보고 가장 좋은 결과를 답으로 표시 할 것입니다. x 값에 대한 참고 사항 : 반드시 단조롭게 증가 할 필요는 없습니다 (obj1 & 2는 둘 다 x 값을 건너 뛸 수 있습니다.). x 축은 반드시 숫자 일 필요는 없으며 날짜 일 수도 있습니다. 다행히도 하나 이상의 답변이 이에 적합합니다.
이 방법은이 테스트 데이터 세트와 CPU에서 제로 - 필 시간을 5 초에서 밀리 초로 줄입니다.각 배열 (데이터 레이어)에서 모든 x 값의 사전을 만들었습니다. 또한 조회 속도를 높이기 위해 각 데이터 계층에 대한 임시 사전을 만들었습니다 (배열을 반복하거나 indexOf를 사용하지 않아야 함). 찾는 것은 매우 빠릅니다. for (all_x_vals의 var 항목) {if (typeof tmp_dict [entry] == 'undefined') ZeroFillArrayEntry(); } ----- 정확한 코드는 아니지만 잘하면 포인트를 얻는다 – pmont