Javascript 通过数组循环以创建二维数组-循环不工作?
下面的代码应该接受输入并创建字母对的2D数组-[[“a”、“T”]、[“T”、“a”]、[“C”、“G”]],但它当前只返回[[“a”、“T”]、[“T”、“a”]],这让我怀疑我的循环逻辑有问题Javascript 通过数组循环以创建二维数组-循环不工作?,javascript,multidimensional-array,Javascript,Multidimensional Array,下面的代码应该接受输入并创建字母对的2D数组-[[“a”、“T”]、[“T”、“a”]、[“C”、“G”]],但它当前只返回[[“a”、“T”]、[“T”、“a”]],这让我怀疑我的循环逻辑有问题 function pair(str) { var paired = []; var str = str.split(""); for (i=0; i<str.length; i++) { var newStr = str.splice(0,1); if (newStr[0] === "
function pair(str) {
var paired = [];
var str = str.split("");
for (i=0; i<str.length; i++) {
var newStr = str.splice(0,1);
if (newStr[0] === "A") {
newStr.push("T");
}
if (newStr[0] === "T") {
newStr.push("A");
}
if (newStr[0] === "C") {
newStr.push("G")
}
if (newStr[0] === "G") {
newStr.push("C")
}
paired.push(newStr);
}
return paired;
}
pair("ATC");
函数对(str){
var成对=[];
var str=str.split(“”);
对于(i=0;i而言,拼接
是个问题。您需要的是:
var newStr = [str[i]];
您需要在索引所指向的字符处对其进行索引,然后将其包装到[]
中,因为您希望将其视为一个数组
在原来的代码中,你根本没有向前移动你的循环。更糟的是,因为<代码>剪接< /代码>修改了原来的字符串,它的<代码>长度<代码>也改变了,使得循环运行的次数比它少。
只是为了促进更多的可读代码的思维功能,请考虑这样写的方式:
pair={"A":"T","T":"A","C":"G","G":"C"};
"ATC".split("").map(function(letter){return [letter,pair[letter]];})
split
使字符串成为一个数组(如您所知),然后数组的map
方法允许您说,对于此数组中的每个项目,使用该项目上提供的函数生成一个新数组。拼接时,数组长度会减少