有没有一种方法可以获取对象内部数组的长度?

时间:2019-05-07 00:49:47

标签: javascript

我正在尝试映射对象数组以获得以下结构:

[
  {
    media:'Wall Street Journal', 
    informational: 101, 
    negative, 296, 
    balanced: length of the array, 
    positive: length of the array
  }
 ] 

以下是我要映射的67个数组之一的示例:

[
  "Wall Street Journal",
  {
    "Informational": Array(101),
    "Negative": Array(296),
    "Balanced": [
      {
        "correspondent_1": "Anthony Richard Harrup",
        "correspondent_2": "False",
        "date": "1-January-2016",
        "date_object": "2016-01-01",
        "day_number": 1,
        "front_page": "False"
      },
      {
        "correspondent_1": "Anthony Richard Harrup",
        "correspondent_2": "False",
        "date": "1-January-2016",
        "date_object": "2016-01-01",
        "day_number": 1,
        "front_page": "False"
      }
    ],

    "Positive": [
      {
        "correspondent_1": "Anthony Richard Harrup",
        "correspondent_2": "False",
        "date": "1-January-2016",
        "date_object": "2016-01-01",
        "day_number": 1,
        "front_page": "False"
      },
      {
        "correspondent_1": "Anthony Richard Harrup",
        "correspondent_2": "False",
        "date": "1-January-2016",
        "date_object": "2016-01-01",
        "day_number": 1,
        "front_page": "False"
      }
    ]
  }
] 

我故意留下了阵列信息,因为这是我从控制台获得的结果。我写了两个例子,说明当您单击控制台中的箭头时数组的外观,甚至还给了length属性。当我尝试映射该数组以获取前面提到的结构时,它使我回想起它无法读取undefined的属性长度,但似乎存在。我什至在项目的另一部分尝试了相同的代码,并且在那里工作了。

这是我的地图功能:

  const data = mediaValues.map(function(media) {
    return {
      media: media[0],
      positive: media[1].Positive.length,
      negative: media[1].Negative.length,
      balanced: media[1].Balanced.length,
      informational: media[1].Informational.length,
    };
  });
  console.log(data); 

如果我只使用媒体,它会给我报章的名字;如果我使用媒体[1]。它会给我返回所有对象的信息,所有其他类别的信息都一样,但是当我尝试访问长度功能不起作用。我只想获取数组中每个类别的条目总数。

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我认为您应该像这样检查循环中的媒体索引

const data = mediaValues.map(function(media,index) {

  if(index==1){
    return {
      positive: media.Positive.length,
      negative: media.Negative.length,
      balanced: media.Balanced.length,
      informational: media.Informational.length,    };
  }else{
  return {
  mediia:media
  }
  }

  });
  console.log(data);