【问题标题】:Number combination calculating数组合计算
【发布时间】:2021-02-15 19:19:55
【问题描述】:

我有一个任务需要生成从 0-0-0 到 100-100-100 (x,y,z)

var x = 0

var y = 0

var z = 0

while(true){
x++
while(true){
    y++
    while(true){
       z++
       msg.payload = [x,y,z]
       node.send(msg)
        }}}

我遇到的问题是 x 和 y 值永远不会改变(输入时只有一次)...... 我认为这不是一种有效的方法,有什么建议吗?

【问题讨论】:

  • 这不是一个完整的代码示例,但我猜测问题出在 msg.payload = [x,y,z] 中。试试这个: let msg = {payload: [x, y, z]}

标签: javascript node.js node-red


【解决方案1】:

如果您知道迭代次数,则使用 for 循环会更简单:

for (let x = 0; x <= 100; ++x) {
    for (let y = 0; y <= 100; ++y) {
        for (let z = 0; z <= 100; ++z) {
            msg.payload = [x,y,z]
            node.send(msg)
        }
    }
}

for (let x = 0; x <= 3; ++x) {
    for (let y = 0; y <= 3; ++y) {
        for (let z = 0; z <= 3; ++z) {
            // msg.payload = [x,y,z]
            // node.send(msg)
            console.log({ payload: [x, y, z] });
        }
    }
}

当然,您可以使用 while 循环代替,但您必须记住在 100 次迭代后中断:

let x = 0;
while(true) {
    let y = 0;
    while(true) {
        let z = 0;
        while(true) {
            msg.payload = [x,y,z]
            node.send(msg);
            if (z === 100) break;
            z++;
        }
        if (y === 100) break;
        y++;
    }
    if (x === 100) break;
    x++;
}

let x = 0;
while(true) {
    let y = 0;
    while(true) {
        let z = 0;
        while(true) {
            // msg.payload = [x,y,z]
            // node.send(msg);
            console.log({ payload: [x, y, z] });
            if (z === 3) break;
            z++;
        }
        if (y === 3) break;
        y++;
    }
    if (x === 3) break;
    x++;
}

或者你对while条件使用倒置的break条件:

let x = 0;
while(x <= 100) {
    let y = 0;
    while(y <= 100) {
        let z = 0;
        while(z <= 100) {
            msg.payload = [x,y,z]
            node.send(msg);
            z++;
        }
        y++;
    }
    x++;
}

let x = 0;
while(x <= 3) {
    let y = 0;
    while(y <= 3) {
        let z = 0;
        while(z <= 3) {
            // msg.payload = [x,y,z]
            // node.send(msg);
            console.log({ payload: [x, y, z] });
            z++;
        }
        y++;
    }
    x++;
}

【讨论】:

  • 可能需要
  • @CharlesBamford 是的,你可能是对的。我修好了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多