function pairElement(str) {
var arr = [['G','C'],['C','G'],['A','T'],['T','A']],b=[]
for(var k=0;k<arr.length;++k){
var res = arr.filter(function(v){
return v;
})[k][0]
var j=0;
while(j<str.length){
if(str[j]===res){
b.push(arr[k])
}
j++;
}
}
return b;
}
console.log(pairElement("ATCGA"));
我希望按照传递给main函数的参数的顺序配对结果。这段代码的结果应该是
[['A','T'],['T','A'],['C','G'],['G','C'],['A','T']]
但我得到[['G','C'],['C','G'],['A','T'],['A','T'],['T','A']]
答案 0 :(得分:1)
你的内圈和外圈都被翻转了。外部循环应遍历字符串,内部循环应遍历数组。
function pairElement(str) {
var arr = [['G', 'C'], ['C', 'G'], ['A', 'T'], ['T', 'A']],
b = [];
for (var k = 0; k < str.length; k++) {
for (var j = 0; j < arr.length; j++) {
if (str[k] === arr[j][0]) {
b.push(arr[j]);
}
}
}
return b;
}
console.log(pairElement("ATCGA"));
您的代码也可以使用对象而不是2D数组进行简化,并使用Array#map
:
function pairElement(str) {
var pairs = { 'G': 'C', 'C': 'G', 'A': 'T', 'T': 'A' };
return str.split('').map(ch => [ch, pairs[ch]]);
}
console.log(pairElement("ATCGA"));