2012-07-08 2 views
2

배열에서 고유 한 문자열을 얻는 최적의 방법은 무엇입니까? 이 그것에게 여러 가지 방법 중 하나를 수행하는 것이 합리적 경우가 여기에있다 3 있습니다 _.indexOf(array, newItem) == -1 키를 Array JavaScript로 수집하는 최적의 방법은 무엇입니까?

  • 해시를 만드는 경우

    1. 모두와 함께, 각 당신이 밀어 새 항목을 먼저 확인을 위해, 배열을 생성하고 다음 keys = _.uniq(keys)

    위의 코드를 실행하고, 상기 어레이 내의 모든 아이템 밀어 true 값으로서, 예컨대 {key1: true, key2: true} 다음 _.keys(hash)

  • underscore.js 헬퍼를 사용한다.

    JavaScript 구조체/VM의 내부 지식과 일부 공식 알고리즘 지식에 대한 지식이 있으면이 사실을 생각할 필요가 없을지 모르지만 나는 아직 없습니다. 나는 브라우저와 브라우저 (그리고 노드)가 다르다고 생각하지만, 선호하는 접근법이있을 수있다. 어떤 아이디어?

  • 답변

    6

    첫 번째 해결 방법은 배열의 각 요소에 대해 배열의 모든 요소를 ​​반복해야합니다. 복잡성은 O(n²)입니다.

    아마 두 번째 것이 가장 좋습니다. 배열을 통해서만 루프를 돌리고 키를 반복하기 때문입니다. 기본적으로 O(2n)입니다. 바로 O(n)입니다.

    세 번째는 효율성에 따라 달라집니다. uniq()입니다. 예를 들어 방법 2의 구현 일 수도 있습니다.

    +0

    작은 비율 (객체 당 50 개 미만의 키) 일 경우 첫 번째 해결 방법은 노드의 초당 3 배 이상 빠릅니다 : https : // gist.github.com/4633028. –

    관련 문제