【发布时间】:2017-11-30 04:58:08
【问题描述】:
我正在编写一个应用程序来计算具有 punnett squares 的遗传杂交,我的应用程序允许用户指定他们想要计算最多 5 个性状杂交的数量,因此我的代码中的歧义不断增加.. 和我对我看到的这个奇怪的 javascript 细微差别有点迷失了
var traitSchema = {
"traitName" : '',
"dominant" : false,
"alleles" : ['','']
};
self.parent1 = {
"traits": []
}
self.parent2 = {
"traits": []
}
//其他代码 //
// Called by init (onchage traitsnum); populates traits array according to traitsnum
function buildParents() {
for(var i = 0; i < self.traitsNum; i++) {
self.parent1.traits.push(angular.copy(traitSchema));
self.parent2.traits.push(angular.copy(traitSchema));
}
}
self.submitClick = function() {
if ((self.traitsNum < 1) || (self.traitsNum > 5)) {
alert("You must choose 1 to 5 traits to calculate.");
}
else {
assignAllelesCross();
}
};
function assignAllelesCross() {
var parent1Alleles = [];
var parent2Alleles = [];
for (var i = 0; i < self.traitsNum; i++) {
parent1Alleles.push(self.parent1.traits[i].alleles);
parent2Alleles.push(self.parent2.traits[i].alleles);
}
console.log('parent 1 alleles ' + parent1Alleles);
console.log('parent 2 alleles ' + parent2Alleles)
}
所以一切正常,但我的控制台中显示的父母 trait1 和 trait2 等位基因的结果如下所示 --> [A,a,B,b]
但我需要的是 --> [[A,a], [B,b]]
我不确定是什么导致它分裂成每个单独的值,而不是按照模式声明中指定的方式将原始等位基因数组对象保留为它们自己的数组对象。
框架信息: 角度”:1.5.7
非常感谢任何帮助! 谢谢!
【问题讨论】:
-
console.log 在你的情况下处理字符串,因为你有
'string' + array'- 所以,你看到的是 parent1Alleles 和 parent2Alleles 的字符串版本......试试console.log('parent 1 alleles ' + JSON.stringify(parent1Alleles)) -
或者
console.log('parent 1 alleles', parent1Alleles);
标签: javascript arrays angularjs multidimensional-array