Как получить доступ к определенному значению во вложенном массиве - PullRequest
1 голос
/ 18 июня 2019

Надеюсь, я смогу сформулировать это.

Идея заключается в том, что мне нужно объединить несколько документов Google в один документ.Мне нужно сделать это по местоположению.

У меня есть лист, который содержит местоположение и идентификатор документа, которые я извлек в массив объектов (needBatches), а затем сгруппировал по критериям (местоположение):

const grouped = groupBy(needBatches, 'location');

function groupBy(objectArray, property) {
      return objectArray.reduce(function (acc, obj) {
        const key = obj[property];
        if (!acc[key]) {
          acc[key] = [];
        }
        acc[key].push(obj);
        return acc;
      }, {});
    }

Теперь я хочу получить идентификаторы документов, хранящиеся в каждом массиве, поэтому я пытаюсь сделать forEach, но получаю ошибку типа: «Не удается найти функцию forEach в объекте».

Итак, я перебираю массив следующим образом:

 const arr = Object.keys(grouped).forEach(function(e) {        
        console.log(e, grouped[e])
    });

В соответствии с журналом консоли теперь он выглядит так:

Location1 [{documentLink1=<link>, documentId1=<id>, folder1=<folder>},{documentLink2=<link>, documentId2=<id>, folder2=<folder>}]

Location2 [{documentLink1=<link>, documentId1=<id>, folder1=<folder>},{documentLink2=<link>, documentId2=<id>, folder2=<folder>}]

Это дает мне все в каждой строке, но мне действительно нужен только идентификатор документа, но я не могу понять, как вызвать его в этом формате.

Я пробовал:

grouped[e].documentId
grouped[e]["documentId"]

Я только начал работатьс массивами объектов, поэтому мои знания довольно ограничены.Кто-нибудь может мне помочь?

сгруппированный объект выглядит так: enter image description here

Здесь я привожу только те строки, у которых нет документа:

    const needBatches = dataRange.filter(function(e){
        return e.documentLink !== ''
    })

, который выглядит следующим образом: enter image description here

...