Суммировать массивы массива объекта

#javascript

#javascript

Вопрос:

У меня есть следующий массив с объектами, и объект состоит из массива. Я хотел бы вернуть общую длину массива «species».

 let fish = [
    {
        "name": "salmon", 
        "species": [
            {
                "name": "atlantic salmon",
                "gender": "male"
            },
            {
                "name": "sockeye salmon",
                "gender": "female"
            },
        ],
    },  
    {
        "name": "carp", 
        "species": [
            {
                "name": "grass carp",
                "gender": "male"
            },
            {
                "name": "common carp",
                "gender": "female"
            },
        ],
    },  
]
  

Я хотел бы получить результат 4 из этого, но я не слишком уверен, как. Есть предложения? Спасибо!

Комментарии:

1. Вы уже пробовали что-нибудь? Не могли бы вы, пожалуйста, добавить свою попытку к вопросу?

2. обычный лосось — это не карп. Вы имели в виду обыкновенного карпа ?

Ответ №1:

Попробуйте эту строку. Это работает нормально.

 let fish = [
    {
        "name": "salmon", 
        "species": [
            {
                "name": "atlantic salmon",
                "gender": "male"
            },
            {
                "name": "sockeye salmon",
                "gender": "female"
            },
        ],
    },  
    {
        "name": "carp", 
        "species": [
            {
                "name": "grass carp",
                "gender": "male"
            },
            {
                "name": "common salmon",
                "gender": "female"
            },
        ],
    },  
];
const speciesCount = fish.flatMap(f => f.species).length;
console.log(speciesCount);
  

Ответ №2:

Вы могли бы использовать .reduce для накопления длины species

 const res = fish.reduce((acc, el) => acc   el.species.length, 0)
  

 let fish = [
  {
    name: "salmon",
    species: [
      {
        name: "atlantic salmon",
        gender: "male",
      },
      {
        name: "sockeye salmon",
        gender: "female",
      },
    ],
  },
  {
    name: "carp",
    species: [
      {
        name: "grass carp",
        gender: "male",
      },
      {
        name: "common salmon",
        gender: "female",
      },
    ],
  },
]

const res = fish.reduce((acc, el) => acc   el.species.length, 0)

console.log(res)  

Ответ №3:

Попробуйте это.

 let count = 0;
for (let i = 0; i < fish.length; i  ) {
  for (let j = 0; j < fish[i][species].length; i  ) {
    count  ;
  }
}