我作為新手試圖解決這個問題,并且在回圈后我在回傳的陣列中看到了額外的元素。
In DNA strings, symbols "A" and "T" are complements of each other, as "C" and "G".
You have function with one side of the DNA, you need to get the other complementary side.
這是我的解決方案
let dnaComStrand = [];
const DNAStrand = function (dnaStrand) {
for (let i = 0; i < dnaStrand.length; i ) {
if (dnaStrand[i] === `A`) {
dnaComStrand[i] = `T`;
} else if (dnaStrand[i] === `T`) {
dnaComStrand[i] = `A`;
} else if (dnaStrand[i] === `C`) {
dnaComStrand[i] = `G`;
} else if (dnaStrand[i] === `G`) {
dnaComStrand[i] = `C`;
}
}
// return dnaComStrand.join(``);
return dnaComStrand;
};
console.log(DNAStrand(`GCATA`));
然而在我看到的控制臺中
Array(5) [ "C", "G", "T", "A", "T" ]
如果我再次嘗試呼叫該函式,這會變得更加混亂。
console.log(DNAStrand([`T`, `C`, `G`]));
導致
Array(5) [ "A", "G", "C", "A", "T" ]
這些額外的元素是從哪里來的??提前致謝
uj5u.com熱心網友回復:
使用函式內部和回圈之前的一組新元素重新初始化陣列。
uj5u.com熱心網友回復:
你可以做:
const hash = {
A: 'T',
T: 'A',
C: 'G',
G: 'C',
}
const DNAStrand = dnaStrand => dnaStrand.split('').map(c => hash[c])
// 1
const dnaComStrand1 = DNAStrand(`GCATA`)
console.log(dnaComStrand1)
// 2
const dnaComStrand2 = DNAStrand(dnaComStrand1.join(''))
console.log(dnaComStrand2)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/351229.html
標籤:javascript 数组
