从数组中的数组获取数据不能按预期工作

问题描述 投票:0回答:3

我有一个数组有一些数组,但我无法从第二个数组中获取父数组中第一个数组的值。

我不知道发生了什么事。

如何在第一次迭代中获取父数组中第一个数组的值,然后在第二次迭代中获取第二个数组中的值,依此类推。无论父级中的数组数量多少?

我的代码:

    <!DOCTYPE html>
<html>
<body>

<p id="demo1"></p>
<p id="demo2"></p>
<p id="demo3"></p>

<script>

var DetalleFactura=[[1, 2, 3],[6, 7, 8]];


DetalleFactura.forEach((subArr)=>{
    document.getElementById("demo1").innerHTML = subArr[0] + "<br>";
    document.getElementById("demo2").innerHTML = subArr[1] + "<br>";
    document.getElementById("demo3").innerHTML = subArr[2] + "<br>";
});
</script>

</body>
</html>
javascript html
3个回答
1
投票

你正确得到子数组,问题是你用最后一个子数组覆盖innerHtml。如果再添加一个子数组,innerHtml将打印DetalleFactura的最后一项。

所以,我认为你可以像.innerHtml += subArr[0] + "<br>";一样连接innerHtml内容


1
投票

使用+ =附加到字符串而不是覆盖它的=。

var DetalleFactura=[[1, 2, 3],[6, 7, 8]];

DetalleFactura.forEach((subArr)=>{
    document.getElementById("demo1").innerHTML += subArr[0] + "<br>";
    document.getElementById("demo2").innerHTML += subArr[1] + "<br>";
    document.getElementById("demo3").innerHTML += subArr[2] + "<br>";
});
<p id="demo1"></p>
<p id="demo2"></p>
<p id="demo3"></p>

0
投票
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8"> 
    <style></style>
    <script>
        var arr = [ 0, [1, 2], [3, 4, 5], [6, [7, 8], 9], 10];

        // Remove nesting of multi-dimensional array and return vector of all
        // elements of a from top-to-bottom, left-to-right, etc. - also converts
        // scalar to singleton vector.
        function ravel(arg, flat) {var self = {name:'ravel'};
            // If flat - accumulator array - not yet defined, create it.
            if ('undefined' == typeof flat) flat = new Array();
            try { 
               // If arg is an array, iterate over the elements in index order.
               if (-1 != arg.constructor.toString().indexOf('Array')) {
                   // Call self recursively to get elements or process next, outermost
                   // level of nesting.
               for (var i = 0; i < arg.length; i++) {this.ravel(arg[i],flat);}
           }
           // Otherwise, just add simple element to accumulator.
           else flat.push( arg );
           // Return accumulated values.
           return flat;
           }
           catch (e) {console.log("ArraysException", e, self.name, null, arguments);}
        };

        function run () {
            var out = ravel( arr );
            document.getElementById('out').innerHTML = out;
        };
    </script>
</head>
<body>
    <form>
        <input type="button" value="ravel and show array" onclick="run();"></input>
    </form>
    <p id="out">
        not clear how you intend to use the elements of the array - this just 
        strips all levels of nesting, leaving a flat, one-dimensional array 
        you can manipulate more easily
    </p>
</body>
</html>
© www.soinside.com 2019 - 2024. All rights reserved.