Przypuśćmy, że mam tablicę tablicy i pustej tablicy:

const sampleArray = [ [{"book":["harry pottar","lotr"]},{"book":["omega","beta"]}] , 
                      [{"book":["ronjan","pirates","simba"]},{"book":["musical","eskobar","elsa"]}],
                      [{"book":["book1","book2","book3"]},{"book":["book4","book5"]}] ]

const emptyArray = []

Chcę nacisnąć całkowitą długość książki pierwszego elementu tablicy jako jeden, drugi element tablicy jako jeden, trzeci jak jeden i tak dalej. Takie, że O / P wygląda:

console.log(emptyArray) => [4,6,5] => total length of book for each element of array.

Dla tego próbowałem jak,

for(let i =0; i<sampleArray.length;i++){
    for(let j = 0; j<sampleArray[i].length;j++){
        emptyArray.push(sampleArray[i][j].book.length)
    }
}

Ale po prostu popycha długość dla każdej książki jako: [2,2,3,3,2].

Nie mogę dostać się do logiki, gdzie mogę połączyć dwukierunkową tablicę do jednego.

Jeśli ktoś potrzebuje dodatkowych informacji, daj mi znać.

0
Siva Pradhan 16 kwiecień 2021, 02:38

2 odpowiedzi

Najlepsza odpowiedź

Chociaż możesz zadeklarować zmienną liczenia, którą dodasz do pierwszej pętli:

for(let i =0; i<sampleArray.length;i++){
    let count = 0;
    for(let j = 0; j<sampleArray[i].length;j++){
        count += sampleArray[i][j].book.length;
    }
    emptyArray.push(count)
}

Byłoby bardziej eleganckie, aby mapować każdą zewnętrzną subarray z .map i odlicz długości z reduce:

const sampleArray = [ [{"book":["harry pottar","lotr"]},{"book":["omega","beta"]}] , 
                      [{"book":["ronjan","pirates","simba"]},{"book":["musical","eskobar","elsa"]}],
                      [{"book":["book1","book2","book3"]},{"book":["book4","book5"]}] ]

const emptyArray = sampleArray.map(
  subarr => subarr.reduce((a, b) => a + b.book.length, 0)
);
console.log(emptyArray);
2
CertainPerformance 15 kwiecień 2021, 23:46

Tak, jest to możliwe przy użyciu array.map z Arry.Reduce

const sampleArray = [
  [{ book: ["harry pottar", "lotr"] }, { book: ["omega", "beta"] }],
  [{ book: ["ronjan", "pirates", "simba"] }, { book: ["musical", "eskobar", "elsa"] }],
  [{ book: ["book1", "book2", "book3"] }, { book: ["book4", "book5"] }]
];

console.log(
  sampleArray.map((element) =>
    element.reduce((acc, cur) => cur.book.length + acc, 0)
  )
);
1
Jannis Morgenstern 15 kwiecień 2021, 23:54