【问题标题】:difference between declaring and array inside or outise a forloop in jsjs中for循环内部或外部声明和数组的区别
【发布时间】:2021-04-18 16:43:08
【问题描述】:

我正在尝试创建一个二维数组,但我在声明它时不知道它的大小。当我尝试在循环外添加一些值时,无论我添加多少值,都没有问题。 但是当我试图在 for 循环中做同样的事情时,我没有得到相同的结果,我的数组中有一些空格。 我不明白我在循环内外所做的事情之间的区别

    let Vs = []
 
let Ts = []
Ts[0] = []
Ts[0][0] = ' test'
Ts[0][1] = ' test1' 
Ts[1] = []
Ts[1][0] = ' test2'
Ts[1][1] = ' test3' 
Ts[2] = []
Ts[2][0] = ' test4'
Ts[2][1] = ' test5' 
console.error('TS : ' + Ts)

for (let i = 0; i < 3; i++) {
    const V = i;
    Vs[i] = []

    Vs[i][i] = V

    let y = i + 1
    Vs[i][y] = V
    console.error(Vs)
}

【问题讨论】:

  • 您能澄清一下添加值是什么意思吗?就像扩展矩阵的大小一样?
  • 在循环之外,您总是指定[i]、[i][0] 和[i][1]。在循环内分配[i]、[i][i] 和[i][i+1]。 (投票结束,因为这个简单的计数问题属于拼写错误)。
  • 就是这样!非常感谢^^

标签: javascript arrays for-loop matrix


【解决方案1】:

我认为您在循环中的作业中有些迷失了。也许以下是您正在寻找的更多内容?

let Vs = [], pre='test';
let Ts = [];
Ts[0] = []
Ts[0][0] = ' test'
Ts[0][1] = ' test1' 
Ts[1] = []
Ts[1][0] = ' test2'
Ts[1][1] = ' test3' 
Ts[2] = []
Ts[2][0] = ' test4'
Ts[2][1] = ' test5' 
console.log('TS:', Ts)

for (let i = 0; i < 3; i++) {
    const V = 2*i;
    Vs[i] = []
    Vs[i][0] = pre+V
    Vs[i][1] = pre+(V+1)
}
console.log(Vs)

【讨论】:

    【解决方案2】:

    好的,在查看您的代码后,这就是为什么您会出现空白,

    在代码块中

    for (let i = 0; i < 3; i++) {
        const V = i;
        Vs[i] = []
    
        Vs[i][i] = V
    
        let y = i + 1
        Vs[i][y] = V
        console.error(Vs)
    }
    

    您正在执行以下操作:

    Vs[i] = [] 在您的矩阵中创建一个新行,

    然后您在该新行的第 i 列插入一个值 V,这意味着您将根据 i 的值获得空格,如果 i 不为 0,则该行的第一个索引将是空!

    然后您要做的是稍后在 Vs[i][y] 的一个位置插入一个值,但在下一次迭代中,您将移动到新行并递增 i,在每一行留下更多空白...

    【讨论】:

      猜你喜欢
      • 2016-12-05
      • 1970-01-01
      • 2012-02-06
      • 2010-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-26
      相关资源
      最近更新 更多