4

我有一个二维数组。我正在尝试计算内部数组中的值。我知道 JS array.length。但是这样做testData.length会产生 5。这是准确的。但是,我想计算每个子数组中的项目数。

testData[0].length将产生 6。但是我将如何动态地计算每个子数组?(因为它会改变)。

var testData = [["column1","test1","test1","tea","party", "water bottle"],
                ["column2","test2","test2","test2 test2"],
                ["column3","test2","test2","test2 test2 "],
                ["column4","test2","test2 test2f asdfsdf"],
                ["column5","test2","test2 test2f asdfsdfasdfasdfasa asda asdfsas"]
]
4

4 回答 4

10

使用reduce

ES6:

const count = testData.reduce((currentCount, row) => currentCount + row.length, 0);

ES5:

var count = testData.reduce(function(currentCount, row) { 
    return currentCount + row.length;
}, 0);

https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce

于 2018-01-26T21:27:57.923 回答
4

采用Array.forEach

s=0;
testData.forEach(function(e,i,a){s += e.length; });

另请参阅:https ://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/forEach

于 2013-05-09T18:09:52.783 回答
0
var testData = [
    ["column1","test1","test1","tea","party", "water bottle"],
    ["column2","test2","test2","test2 test2"],
    ["column3","test2","test2","test2 test2 "],
    ["column4","test2","test2 test2f asdfsdf"],
    ["column5","test2","test2 test2f asdfsdfasdfasdfasa asda asdfsas"]
];
for(var i=0;i < testData.length;i++){
  for(var j=0;j<testData[i].length;j++){
    alert(testData[i][j]);
  }
}
于 2013-05-09T18:07:18.477 回答
0

尝试向 Array 对象添加新属性。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=windows-1250">
    <title>New Property</title>
    <script type="text/javascript" language="JavaScript">
      Array.prototype.biLength = function(){
        numItems = 0;
        numRows = this.length;
        for (var i = 0; i < numRows; i++){
          row = testData[i];
          numCols = row.length;
          for (var j = 0; j < numCols; j++){
            numItems++;
          }
        }
        return numItems;
      };
      var testData = [
        ["column1","test1","test1","tea","party", "water bottle"],
        ["column2","test2","test2","test2 test2"],
        ["column3","test2","test2","test2 test2 "],
        ["column4","test2","test2 test2f asdfsdf"],
        ["column5","test2","test2 test2f asdfsdfasdfasdfasa asda asdfsas"]
      ];
      alert(testData.biLength());
    </script>
  </head>
  <body>

  </body>
</html>
于 2013-05-09T18:17:52.700 回答