首页 > 解决方案 > 在 Nodejs 中,数组的串联是如何工作的?

问题描述

所以,我试图让一个变量总是接收一个新值和过去的值。有没有办法对 mySQL 返回的对象做类似的事情?像这样的东西:SQL - {10,11,20}

在一个循环中,变量应该保留它收到的过去值并添加一个新值。对于 { 变量 - 10 变量 - 10,11 变量 - 10,11,20 }

是的,我是一名学生,我没有找到可行的方法来做到这一点。我试过串联,但它不起作用。

          <% for (var i = 0; i < barras.length; i++){ %>
          barras = <%= JSON.parse(barras[i].progresso)%> + "," + <%= 
JSON.parse(barras[i].progresso)%> ;     
              <%}%>

视图文件:

<!DOCTYPE html>
<html>
<head>
  <!-- Plotly.js -->
  <script src="https://cdn.plot.ly/plotly-latest.min.js"></script>
</head>

<body>
<% if(barras){ %>
  <ul>
    <% for (var i = 0; i < barras.length; i++) { %>
      <li>
        <%= JSON.parse(barras[i].progresso) %>
      </li>
    <%}%>
  </ul>
<% } %>
  <div id="myDiv" style="width: 480px; height: 400px;"><!-- Plotly chart will be drawn inside this DIV --></div>
  <script>
  <% if(barras){ %>
          <% for (var i = 0; i < barras.length; i++){ %>
              barras = <%= JSON.parse(barras[i].progresso)%> + "," + <%= JSON.parse(barras[i].progresso)%> ;     
          <%}%>
  <% } %>
    data = [{ 
      type: 'bar', 
      x: [barras],
      y: 'teste', 
      orientation: 'h' 
    }]; 

    console.log(barras);


Plotly.newPlot('myDiv', data);
  </script>
</body>
</html>

此视图的路线:

app.get('/barras', function(req,res){
    console.log('Database connection online');
    connection.query('select progresso,nome from barra', function(error,result){
        barras = result;
        console.log(barras);
        res.render('admin/barras',barras);
    });
});

标签: javascriptnode.jsplotlyejs

解决方案


你把事情复杂化了一点。在执行迭代之前从原始数组创建要迭代的值更简单。

例如,数组[[10], [10, 11], [10, 11, 20]]可以这样构造[10, 11, 20]

const a = [10, 11, 20];
const b = [];

a.forEach((n, i) => {
  b.push(a.slice(0, i).concat(n));
});

console.log(b);

然后做任何你想做的事:

for (const values of b) {
   // ...
}

推荐阅读