배열을 데시메이트하는 방법.

2308 단어 mjavascript
어제 흥미로운 사용 사례가 도착했습니다. 코드의 단순함이 마음에 들어서 공유하려고 합니다.

코드: 붐 💣




export function decimateArray(arr, passes = 1, fidelity = 2) {
  let tmpArr = arr.filter((_, index) => index % fidelity === 0);
  passes--;
  if (passes) {
    tmpArr = decimateArray(tmpArr, passes, fidelity);
  }
  return tmpArr;
}



사용 사례:



"I have a large array of xy coordinates, I need it to draw freehand on canvas but it's too much data to work with quickly, I just want to draw an approximate polygon. I want the array to be smaller so I can more efficiently loop through the data and I dont care about all of the data just the start and end."



어떻게?



데이터의 인덱스가 전달된 모듈러스fidelity인 경우 배열이 제공되고 이 데이터를 유지하고 이 데이터 세트를 주어진 수만큼 재귀적으로 실행합니다. passes .

영어로 부탁해?



큰 배열이 들어가고 세부 사항이 적은 작은 배열이 나옵니다.

좋은 웹페이지 즐겨찾기