JS 구 해 두 수의 합 알고리즘 상세 해

본 고의 실례 는 JS 구 해 두 수의 합 알고리즘 을 서술 하 였 다.여러분 께 참고 하도록 공유 하 겠 습 니 다.구체 적 으로 는 다음 과 같 습 니 다.
제목 설명
하나의 정수 배열 과 하나의 목표 치 를 정 하고 배열 과 목표 치 로 하 는 두 개의 수 를 찾 습 니 다.
모든 입력 이 하나의 답 에 만 대응 하고 같은 요 소 를 중복 이용 할 수 없다 고 가정 할 수 있다.
::: tip
주어진 nums=[2,7,11,15],target=9
왜냐하면 nums[0]+nums[1]=2+7=9
그래서[0,1]로 돌아 갑 니 다.
:::
해법Map을 이용 하여 배열 요소 값 과 대응 하 는 하 표를 기록 하고 한 수nums[i]에 대해 존재 여 부 를 판단 한다target - nums[i].

var twoSum = function(nums, target) {
 const _length = nums.length;
 const _mayMap = new Map();
 for (let i = 0; i < _length; i++) {
 if (_mayMap.has(target - nums[i])) {
  return [_mayMap.get(target - nums[i]), i];
 }
 _mayMap.set(nums[i], i);
 }
};

지도 회고
맵 대상 저장 키 쌍.모든 값(대상 또는 원시 값)은 키 나 값 으로 사용 할 수 있 습 니 다.

new Map([iterable])

Map한 배열 또는 다른Iterable대상 일 수 있 습 니 다.그 요 소 는 키 쌍(두 요소 의 배열,예 를 들 어iterable입 니 다.모든 키 쌍 은 새[[ 1, 'one' ],[ 2, 'two' ]]에 추 가 됩 니 다.Mapnull로 간주 된다.
Objects 와 maps 의 비교undefinedObjects비슷 한 것 은 버튼 을 눌 러 서 값 을 액세스 하고 삭제 하 며 키 가 연결 되 어 있 는 지 확인 할 수 있 습 니 다.
그래서 우 리 는 과거 에 대상 을Maps으로 사용 해 왔 다.
그러나MapsMaps는 중요 한 차이 가 있 으 므 로 다음 상황 에서 사용Objects하 는 것 이 더 좋 은 선택 이다.
하나의Map키 는 문자열 이나Object만 있 을 수 있 지만 하나의Symbols키 는 함수,대상,기본 유형 을 포함 하여 임 의 값 일 수 있 습 니 다.Map의 키 값 은 질서 가 있 고 대상 에 추 가 된 키 는 그렇지 않 습 니 다.따라서 이 를 반복 할 때Map대상 은 삽 입 된 순서대로 키 값 을 되 돌려 줍 니 다.
size 속성 을 통 해 하나의Map키 값 대 개 수 를 직접 얻 을 수 있 으 며,Map키 값 대 개 수 는 수 동 으로 만 계산 할 수 있 습 니 다.Object직접 교체 할 수 있 고Map의 교 체 는 먼저 키 배열 을 얻 은 다음 에 교체 해 야 한다.Object모두 자신의 원형 이 있 습 니 다.원형 체인 의 키 이름 은 대상 에 설 치 된 키 이름과 충돌 할 수 있 습 니 다.
ES5 부터 원형 이 없 는 대상 을 만 들 수 있 지만 이런 용법 은 흔 하지 않다.
맵 은 키 값 을 자주 삭제 하 는 장면 에서 성능 이 좋 습 니 다.
속성
Map.length
속성 length 의 값 은 0 입 니 다.
get Map[@@species]
이 구조 함 수 는 파생 대상 을 만 드 는 데 사 용 됩 니 다.
Map.prototype
맵 구조 기의 원형 을 나타 낸다.속성 을 추가 하여 모든 맵 대상 에 적용 할 수 있 습 니 다.
모든 맵 대상 인 스 턴 스 는 맵.prototype 을 계승 합 니 다.
Map.prototype.constructor
함수 하 나 를 되 돌려 줍 니 다.인 스 턴 스 의 원형 을 만 들 었 습 니 다.기본 값 은 맵 함수 입 니 다.
Map.prototype.size
맵 대상 의 키/값 쌍 의 수량 을 되 돌려 줍 니 다.
Map.prototype.clear()
맵 대상 의 모든 키/값 쌍 을 제거 합 니 다.
Map.prototype.delete(key)
맵 대상 에 이 요소 가 존재 하면 제거 하고 true 로 돌아 갑 니 다.그렇지 않 으 면 이 요소 가 존재 하지 않 으 면 false 로 돌아 갑 니 다.
Map.prototype.entries()
새로운 Iterator 대상 을 되 돌려 줍 니 다.맵 대상 에 있 는 모든 요소 의[key,value]배열 을 삽입 순서에 따라 포함 합 니 다.
Map.prototype.forEach(callbackFn[, thisArg])
삽입 순서에 따라 Map 대상 의 모든 키 값 을 콜 백 Fn 함수 로 호출 합 니 다.foreach 에 thisArg 를 제공 하면 매번 리 셋 에서 this 값 으로 사 용 됩 니 다.
Map.prototype.get(key)
키 에 대응 하 는 값 을 되 돌려 줍 니 다.존재 하지 않 으 면 undefined 로 돌아 갑 니 다.
Map.prototype.has(key)
맵 인 스 턴 스 가 키 에 대응 하 는 값 을 포함 하 는 지 불 값 을 되 돌려 줍 니 다.
Map.prototype.keys()
새로운 Iterator 대상 을 되 돌려 줍 니 다.맵 대상 에 있 는 모든 요소 의 키 를 삽입 순서에 따라 포함 합 니 다.
Map.prototype.set(key, value)
맵 대상 의 키 값 을 설정 합 니 다.이 맵 의 대상 을 되 돌려 줍 니 다.
Map.prototype.values()
새로운 Iterator 대상 을 되 돌려 줍 니 다.맵 대상 의 모든 요소 의 값 을 삽입 순서에 따라 포함 합 니 다.
Map.prototype[@@iterator]()
새로운 Iterator 대상 을 되 돌려 줍 니 다.맵 대상 에 있 는 모든 요소 의[key,value]배열 을 삽입 순서에 따라 포함 합 니 다.
예시

var myMap = new Map();

var keyObj = {},
 keyFunc = function () {},
 keyString = "a string";

//    
myMap.set(keyString, "  'a string'    ");
myMap.set(keyObj, "  keyObj    ");
myMap.set(keyFunc, "  keyFunc    ");

myMap.size; // 3

//    
myMap.get(keyString); // "  'a string'    "
myMap.get(keyObj);  // "  keyObj    "
myMap.get(keyFunc);  // "  keyFunc    "

myMap.get("a string"); // "  'a string'    "
       //   keyString === 'a string'
myMap.get({});   // undefined,   keyObj !== {}
myMap.get(function() {}) // undefined,   keyFunc !== function () {}

데 이 터 를 전달 하 다

let valuesMap = new Map();

class payserviceclass {
 constructor() {}
 getItem(key) {
 const stringKey = String(key);
 if (valuesMap.has(key)) {
  return valuesMap.get(stringKey);
 }
 return null;
 }
 setItem(key, val) {
 return valuesMap.set(String(key), val);
 }

 clear() {
 return valuesMap.clear();
 }
}
const payservice = new payserviceclass();

export default payservice;

참고:
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Map
관심 있 는 친 구 는 온라인 HTML/CSS/JavaScript 코드 실행 도 구 를 사용 할 수 있 습 니 다.http://tools.jb51.net/code/HtmlJsRun상기 코드 실행 효 과 를 테스트 할 수 있 습 니 다.
자 바스 크 립 트 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있다.
본 고 에서 말 한 것 이 여러분 의 자 바스 크 립 트 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기