在 JavaScript 中用 0 填充 2D 数组

Filling a 2D array with 0s in JavaScript

本文关键字:2D 数组 填充 JavaScript 中用      更新时间:2023-11-26

我一直在尝试用 JavaScript 填充 2D 数组,但我不断崩溃我的浏览器,所以我假设我有无限递归,但我似乎找不到我的错误。这是我的代码:

//The two sequences to compare
var sequence1 = "ATTGCTGACTTCA"
var sequence2 = "ATGCTACTA"
  //Creates multi-dimensional array dependent on sequence lengths
var arr = new Array(sequence1.length + 1)
for (i = 0; i < sequence1.length + 1; i++) {
  arr[i] = new Array(sequence2.length + 1);
}
//Fills array with 0s
for (i = 0; i < arr.length; i++) {
  var col = i;
  for (i = 0; i < arr[col].length; i++) {
    arr[col][i] = 0;
  }
}

当你填充数组时,你通过内部循环更改了 i 的值,并且在内部循环之后没有将其更改回它的原始值!不要在外部和内部循环中使用相同的变量名!

for (i = 0; i < arr.length; i++) {
  var col = i;
  for (i = 0; i < arr[col].length; i++) {
    arr[col][i] = 0;
  }
  i = col;
}

你真的应该做什么:

for (i = 0; i < arr.length; i++) {
  for (j = 0; j < arr[i].length; j++) {
    arr[i][j] = 0;
  }
}

您可以使用Array#fromArray#mapArray#fill

var arr = Array.from({
    length: sequence1.length + 1
}).map(() => Array.from({
    length: sequence2.length + 1
}).fill(0));

var sequence1 = "ATTGCTGACTTCA",
    sequence2 = "ATGCTACTA";
//Creates multi-dimensional array dependent on sequence lengths
var arr = Array.from({
    length: sequence1.length + 1
}).map(() => Array.from({
    length: sequence2.length + 1
}).fill(0));
console.log(arr);

解释:

var arr = Array.from({
    length: sequence1.length + 1
})
// Create an array of passed `length` of `undefined` elements
// map will iterate over all the elements of the array and update the value of each element
// Create new array and use this as the individual item in the main array
.map(() => Array.from({
    length: sequence2.length + 1
}).fill(0));