【问题标题】:How can I check the size of an array containing sub arrays?如何检查包含子数组的数组的大小?
【发布时间】:2017-03-06 06:33:42
【问题描述】:

我想从下面的数组中获得类似于 array1.length 的东西:

var array1 = {
 sub1: [1,2,3],
 sub2: ["K","J","H"],
 sub3: ["Mango","Armada","Leffen","Mew2king"],
 sub4: ['1/8"', '3/16"', '1/4"'],
};

现在我得到以下输出:

console.log(array1) //Object {sub1: Array[3], sub2: Array[3]...}
console.log(array1.length) //undefined
console.log(array1[1]) //undefined
console.log(array1[1].length //Cannot read property 'length' of undefined

我哪里错了?

【问题讨论】:

  • 您定义的不是数组而是对象。 array1.sub1.length 会给你一个数组的长度
  • Object.keys(array1).length 因为array1 不是数组
  • @gurvinder372 谢谢,这符合我的要求。是否可以定义包含子数组的数组?
  • @MatthewSirkin 是的,您可以创建一个实际的数组和子数组作为数组项,而不是将 array1 创建为对象

标签: javascript arrays sub-array


【解决方案1】:

array1 不是数组,是对象。 sub1等都是数组,那么你可以:

array1.sub1.length; // returns 3

【讨论】:

    【解决方案2】:

    您有一个Object,而不是Array

    您可以遍历键并获取对象内部数组的长度。

    var object = { sub1: [1, 2, 3], sub2: ["K", "J", "H"], sub3: ["Mango", "Armada", "Leffen", "Mew2king"], sub4: ['1/8"', '3/16"', '1/4"'] };
    Object.keys(object).forEach(function (key) {
        console.log(object[key].length);
    });

    【讨论】:

    • 但是IE8及以下、Opera和FF 3.6及以下不支持Object.keys。
    • 你可以使用for ... in循环检查hasOwnProperty
    【解决方案3】:

    试试这个...

    var array1 = {
      sub1: [1, 2, 3],
      sub2: ["K", "J", "H"],
      sub3: ["Mango", "Armada", "Leffen", "Mew2king"],
      sub4: ['1/8"', '3/16"', '1/4"'],
    };
    
    console.log(array1.sub1.length,array1.sub2.length,array1.sub3.length,array1.sub4.length);

    【讨论】:

      【解决方案4】:

      你总是可以这样做:

      var array1 = [[1,2,3],["K","J","H"],["Mango","Armada","Leffen","Mew2king"],
       ['1/8"', '3/16"', '1/4"']];
      var flatArray = [].concat.apply([],array1)
      

      这将使数组变平,以便您可以使用长度等。

      【讨论】:

        【解决方案5】:

        Converting JSON Object into Javascript array

        var array1 = {
         sub1: [1,2,3],
         sub2: ["K","J","H"],
         sub3: ["Mango","Armada","Leffen","Mew2king"],
         sub4: ['1/8"', '3/16"', '1/4"'],
        };
        alert("Size : "+Object.keys(array1).map(function(k) { return array1[k] }).length);

        输出

        尺寸:4

        工作原理

        将键转换为数组,然后使用 Array.map 映射回值 然后,可以得到这个数组的长度。 gg wp。

        注意:您也可以在开始时创建一个 var,然后将其用于您的所有进程。

        【讨论】:

          【解决方案6】:

          array1 是一个 JSON 对象。所以

          array1.subArray.length

          应该工作

          【讨论】:

          • 不幸的是,它(array1) 是一个对象。
          • @SankarRaj 这就是我所说的。 array1 是一个对象。不理解反对票。
          猜你喜欢
          • 2017-03-10
          • 1970-01-01
          • 2018-08-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-05-04
          • 2020-07-15
          相关资源
          最近更新 更多