簡體   English   中英

獲取對象內對象數組的長度

[英]getting the length of the array of objects inside an object

我想映射對象並獲取在這種情況下可以在replies中找到的replies數量/長度


let data = [ 
   { 
      "feedbackId":32,
      "sender":"12345"
      "comment":"Test Comment",
      "replies":[ 
         { 
            "feedbackLogId":32,
            "feedbackReplyLogId":1,
            "comments":"So this is 1",
            "createdBy":"Jack",
         },
         { 
            "feedbackLogId":32,
            "feedbackReplyLogId":2,
            "comments":"2nd one",
            "createdBy":"Min",
         }
      ],
   }
]

這就是我所做的。 我只能得到1作為長度。

let repliesToRender = data.map((item) => {item.replies})
let numReplies = repliesToRender.length

您的代碼中有 2 個問題,

let repliesToRender = data.map((item) => {item.replies})

應該

let repliesToRender = data.map((item) => item.replies)

並且 map 返回你的數組,所以你的 repliesToRender 將是一個數組數組,所以你需要

let numReplies = repliesToRender[0].length

要不就

let numReplies = data.replies.length

 let data = [ { "feedbackId":32, "sender":"12345", "comment":"Test Comment", "replies":[ { "feedbackLogId":32, "feedbackReplyLogId":1, "comments":"So this is 1", "createdBy":"Jack", }, { "feedbackLogId":32, "feedbackReplyLogId":2, "comments":"2nd one", "createdBy":"Min", } ], } ] let repliesToRender = data.map((item) => item.replies) let numReplies = repliesToRender[0].length console.log(numReplies)

您可以使用Array.prototype.map計算每個反饋的回復

為了計算回復總數,您可以使用Array.prototype.reduce

 let data = [{"feedbackId":32,"sender":"12345","comment":"Test Comment","replies":[{"feedbackLogId":32,"feedbackReplyLogId":1,"comments":"So this is 1","createdBy":"Jack"},{"feedbackLogId":32,"feedbackReplyLogId":2,"comments":"2nd one","createdBy":"Min"}]},{"feedbackId":32,"sender":"12345","comment":"Test Comment","replies":[{"feedbackLogId":32,"feedbackReplyLogId":1,"comments":"So this is 1","createdBy":"Jack"},{"feedbackLogId":32,"feedbackReplyLogId":2,"comments":"2nd one","createdBy":"Min"}]}] let repliesCount = data.map(({replies}) => replies.length); console.log('per replies',repliesCount); let totalCount = data.reduce((a,c) => a + c.replies.length, 0); console.log('total replies ',totalCount)

另一種方法。 在大型數據集的情況下,這將運行得更快,因為它不使用循環。

let data = [ 
   { 
      "feedbackId":32,
      "sender":"12345",
      "comment":"Test Comment",
      "replies":[ 
         { 
            "feedbackLogId":32,
            "feedbackReplyLogId":1,
            "comments":"So this is 1",
            "createdBy":"Jack",
         },
         { 
            "feedbackLogId":32,
            "feedbackReplyLogId":2,
            "comments":"2nd one",
            "createdBy":"Min",
         }
      ],
   }
]

let {replies} = data[0];
console.log(replies.length);

如果每個對象都需要回復計數,那么下面將按順序返回各個對象的回復計數數組,

let eachObjectsRepliesCount = data.map(({replies}) => replies.length);

如果所有組合的對象都需要回復計數,那么下面將返回總回復計數,

let repliesToRender = data.map((item) => item.replies)
let totalRepliesCount = repliesToRender[0].length

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM