JS 구 해 두 수의 합 알고리즘 상세 해
5479 단어 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' ]]
에 추 가 됩 니 다.Map
는null
로 간주 된다.Objects 와 maps 의 비교
undefined
와Objects
비슷 한 것 은 버튼 을 눌 러 서 값 을 액세스 하고 삭제 하 며 키 가 연결 되 어 있 는 지 확인 할 수 있 습 니 다.그래서 우 리 는 과거 에 대상 을
Maps
으로 사용 해 왔 다.그러나
Maps
와Maps
는 중요 한 차이 가 있 으 므 로 다음 상황 에서 사용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상기 코드 실행 효 과 를 테스트 할 수 있 습 니 다.
자 바스 크 립 트 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있다.
본 고 에서 말 한 것 이 여러분 의 자 바스 크 립 트 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JS 판단 수조 네 가지 실현 방법 상세그러면 본고는 주로 몇 가지 판단 방식과 방식 판단의 원리를 바탕으로 문제가 있는지 토론하고자 한다. 예를 들어 html에 여러 개의 iframe 대상이 있으면 instanceof의 검증 결과가 기대에 부합되지 않을...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.