【问题标题】:get and check javascript array of array获取并检查数组的javascript数组
【发布时间】:2014-08-12 06:11:39
【问题描述】:

我有一个动态对象,它将添加新对象并更新现有数组。我需要检查以下问题

  1. 阵列是否有另一个阵列?
  2. 如何从数组的数组中获取数据?

下面是数组对象

[
"Stories",
"Tasks",
"In Progress",
"In Review",
"Completed",
[
    {
        "divName": "content-container2",
        "content": "us 2345",
        "topPos": 109,
        "leftPos": 150
    },
    {
        "divName": "content-container3",
        "content": "Description",
        "topPos": 98,
        "leftPos": 382
    },
    {
        "divName": "content-container4",
        "content": "12212",
        "topPos": 110,
        "leftPos": 644
    }
]
]

【问题讨论】:

  • 你有没有尝试过?
  • isArray 函数通常包括Object.prototype.toString.call(obj) == '[object Array]'。也许这是确定成员是否为数组的开始?
  • 这看起来像家庭作业。
  • @JoeMoe1984 这是很多项目都会遇到的问题,所以不管是不是作业。

标签: javascript jquery arrays json multidimensional-array


【解决方案1】:

我正在解决我所理解的和我所知道的

我不知道有没有内置函数,你可以遍历数组并得到答案。

Ques:- wheather array has another array?

您可以像下面这样使用Array.some

var arr = [1,2,3,[1,2,3],5]
arr.some(function(element){
     return Array.isArray(element)
 })// returns true

如果有任何元素是数组,它将返回true

Ques:- how to get data from array of array ?

您可以使用forEach 并检查它是否是数组访问元素

var arr = [1,2,3,[1,2,3],5];
arr.forEach(function(element){
      if(Array.isArray(element)){
         console.log(element[0])
       }
}); //prints 1

如果它提供了一个开始的方法,那很好。

注意:- IE8 不支持 SomeForEachfor 循环将起作用。

【讨论】:

    【解决方案2】:

    如 cmets 中所述,您可以使用 isArray 方法

    var arr=/* your array */
    var pos=[];
    var hasArray=false;
    for(var i=0;i<arr.length;i++)
    {
       if(Array.isArray(arr[i])){
          hasArray=true;
          pos.push(i);
        }
    }
    // now getting sub arrays
    for(var i=0;i<pos.length;i++)
    {
       var subArr=arr[pos[i]];
       /* do something with this subarr */
    }
    

    【讨论】:

      【解决方案3】:

      你可以遍历数组,检查元素是否为数组:

      for( var i = 0, len = arr.length; i < len; i++) {
          //check if arr[i] is Array
          if(arr[i] instanceof Array) {
              //its array
              var objArr = arr[i];
              //loop thru all objects
              for(var x = 0, xlen= Object.keys(objArr).length; x < xlen; x++) {
                  //loop thru object to get all values
                  var obj = objArr[x];
                  for(var k in obj) {
                      console.log( "Key:"+ k + " value:" + obj[k] );
                  }
              }
          }
      }
      

      演示:: jsFiddle

      【讨论】:

        猜你喜欢
        • 2018-05-12
        • 2016-08-04
        • 1970-01-01
        • 2020-02-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-14
        • 1970-01-01
        相关资源
        最近更新 更多