아마 것입니다 :
for-of
루프를 사용하십시오 (또는 가능한 필터링으로 맵핑 가능)
조회 오브젝트 또는 맵 사용
전환 / 조회 할 때 문자열을 소문자 또는 대문자로 만듭니다 (그러나 전환 / 조회에서 중복 된 항목도 작동 함).
/ , / , / / 또는 / dna
만 포함 한다는 것을 알고 있다면 (내가 이해하는 것처럼 DNA ;-)) 조회 객체 /지도와 함께 매핑 기능과 함께 사용할 수 있습니다 .c
C
g
G
t
T
a
A
Array.from
const table = {
c: "CG",
g: "GC",
t: "TA",
a: "AT"
};
function pairDNA(dna) {
return Array.from(dna, entry => table[entry.toLowerCase()]);
}
내가 사용하고 Array.from
그것에서 문자열을 분할하기 때문에 코드 포인트 는 매핑 기능을 제공하는 경우뿐만 아니라 코드 단위 (서로 게이트 쌍을 중단하지 않습니다) 및 매핑 기능이 있습니다. (기본적으로 중간 배열 Array.from(str, mappingFunction)
은 [...str].map(mappingFunction)
없지만 중간 배열은 없습니다.) 아마도 문자열의 내용과 관련하여 여기에 관련된 모든 것은 아니지만 문자열에 서로 게이트 쌍이 포함되어 있는지 여부는 중요 할 수 있습니다.
또는 Map
:
const table = new Map([
[c, "CG"],
[g, "GC"],
[t, "TA"],
[a, "AT"]
]);
function pairDNA(dna) {
return Array.from(dna, entry => table.get(entry.toLowerCase()));
}
그 가정을 할 수 없다면 .filter
, 일치하지 않는 것을 걸러 내려면 다음을 추가하십시오 .
function pairDNA(dna) {
return Array.from(dna, entry => table.get(entry.toLowerCase())).filter(Boolean);
// or if using an object: return dna.map(entry => table[entry.toLowerCase()]).filter(Boolean);
}
또는 추가 배열을 만들지 않으 filter
려면 생성 할 것입니다 for-of
(또는 심지어 for
).
const table = {
c: "CG",
g: "GC",
t: "TA",
a: "AT"
};
function pairDNA(dna) {
const pairs = [];
for (const entry of dna) {
const value = table[entry.toLowerCase()];
if (value) {
pairs.push(value);
}
}
return pairs;
}