附加到二维数组的Javascript

时间:2018-11-17 17:29:37

标签: javascript arrays

我正在尝试将数组追加到数组。我期望输出为:

docker-compose.yml

但是我得到了:

version: "3"
services:
  eureka:
    image: eureka:latest
    ports:
    - "8761:8761"
    networks:
    - webnet
  noob:
    image: foo:latest
    ports:
    - "8971:8971"
    networks:
    - webnet

networks:
  webnet:

这是我到目前为止所拥有的:

<!DOCTYPE html>
<html>
    <head></head>
    <body>
        <ul id="ulid">
            <li>第一个</li>
            <li>第二个</li>
            <li>第三个</li>
        </ul>
        <br/>
        <input type="button" value="添加" onclick="add1();"/>
    </body>
    <script type="text/javascript">
       function add1(){
           var li1 = document.createElement("li")
           var text1 = document.createTextNode("下一个")
           li1.appendChild(text1)
           document.getElementById("ulid").appendChild(li1);
        }
    </script>
</html>

3 个答案:

答案 0 :(得分:2)

初始化hist_por时,您希望它是一个二维数组,而目前只有一个数组。因此,您需要将其实例化为:

hist_por = [['Dep','POR']]; // [[ ... ]] instead of [ ... ]

根据@justrusty的回答,当您将其传递给JSON.stringify(hist_por)时,还需要document.write()。这是更重要的部分,因此他的回答应该被接受。

因此整个代码块将变为:

function get_historical() {
  var well = document.getElementById('wellSelect'); 
  var selected_well = well.options[well.selectedIndex].value; 
  var hist_json_obj = JSON.parse(Get("/get_historical/" + selected_well));
  hist_por = [['Dep','POR']];
  for (var item in hist_json_obj) {
    if (hist_json_obj.hasOwnProperty(item)) {
       var dep = hist_json_obj[item].dep;
       var por = hist_json_obj[item].por;

       var arr_rop = [dep, parseFloat(por)];
       hist_por.push(arr_por);

    }
  }
  document.write(JSON.stringify(hist_por));
}

答案 1 :(得分:2)

这可能会帮助您https://codepen.io/anon/pen/xQLzXx

Private Sub cboVisitNo_Click()
    Dim j As Long, k As Long, i As Long
    Dim c As Range

    Me.lstBNum.Clear
    i = 0
    With Worksheets("Biopsy Log")
        For Each c In .Range(.Range("A2"), .Cells(.Rows.Count, 1).End(xlUp)).Cells 
            If c.Value = Me.cboVisitNo.Value Then
                Me.lstBNum.AddItem '<< edit  ###
                For k = 0 To 5
                    Me.lstBNum.List(i, k) = c.Offset(0, k)  
                Next            
                i = i + 1  
            End If
        Next c
    End With
End Sub

基本上,这只是将其写入文档的方式。如果在控制台中登录,则会看到附加的数组。或者,如果您先var arr = ['foo','bar']; var arr2 = ['baz', 'boo'] arr.push(arr2); console.log(arr); document.write(arr); document.write("<br>"); document.write(JSON.stringify(arr)); ,它会按预期显示。

我的建议是总是 JSON.stringify(),这样您就可以准确了解数据的结构

答案 2 :(得分:1)

其他人已经指出了问题所在(+您的一个变量名中有一个错字-arr_roparr_por)。这是一个ES6版本,出于学习目的,它将在较旧的浏览器中崩溃:

function get_historical() {
  const well = document.getElementById('wellSelect');
  const selected_well = well.options[well.selectedIndex].value;
  const hist_json_obj = JSON.parse(Get("/get_historical/" + selected_well));

  const hist_por = Object.values(hist_json_obj).reduce(
    (arr, item) => [...arr, [item.dep, +item.por]],
    [["Dep", "POR"]]
  );

  document.write(JSON.stringify(hist_por));
}