Как работает конкатенация массива в Nodejs? - PullRequest
0 голосов
/ 11 сентября 2018

Итак, я пытаюсь заставить переменную всегда получать новое значение и прошлые значения.Есть ли способ сделать что-то подобное с объектом, который вернул 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);
    });
});

1 Ответ

0 голосов
/ 11 сентября 2018

Вы слишком усложняете вещи, немного имо.Проще создать значения, которые вы хотите повторить, из исходного массива перед выполнением итерации.

Например, массив [[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) {
   // ...
}
...