【问题标题】:Javascript; push an array object into another arrayJavascript;将一个数组对象推入另一个数组
【发布时间】: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


【解决方案1】:

当你做类似的事情时:

console.log('parent 1 alleles ' + parent1Alleles);

parent1Alleles 使用 toString() 方法转换为字符串。对于数组,toString() 内部调用每个元素的 toString() 并附加它们,用逗号 (,) 分隔。由于各个元素也是数组,因此最终结果看起来像一个包含四个元素的平面数组。

如果您将数组视为 JSON,则可以获得所需的输出,并在将其附加到字符串之前对其进行适当的字符串化。这样的事情应该可以工作:

console.log('parent 1 alleles ' + JSON.stringify(parent1Alleles));

【讨论】:

    猜你喜欢
    • 2020-08-23
    • 2020-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-03
    • 2022-01-03
    • 1970-01-01
    相关资源
    最近更新 更多