简体   繁体   English

Javascript foreach(多数组)

[英]Javascript foreach (Multi array)

I got this javascript code wherein im trying to access the "recommendedTo" array but, when im trying to access it via foreach it just returns as a [array] and not the exact values of the array. 我得到了这个javascript代码,其中我尝试访问“ recommendedTo”数组,但是当我尝试通过foreach访问它时,它只是作为[array]返回,而不是数组的确切值。

What am i doing wrong? 我究竟做错了什么?

let requestBody = {
    "recommendations":[
        {
            "book" : "12",
            "recommendedTo" : [
                {
                    "employeeId" : "22"
                },
                {
                    "employeeId" : "44"
                }
            ]
        },
        {
            "book": "13",
            "recommendedTo":[
                {
                    "employeeId": "2"
                },
                {
                    "employeeId": "3"
                }
            ]
        }
    ]
};

let messageBody = {
    recommendations: []
};

if (Array.isArray(requestBody.recommendations)) {
    requestBody.recommendations.forEach(function(books, index) {
        messageBody.recommendations.push({
            book: books.book,
            recommended:[]
        }); 
        requestBody.recommendations[index].recommendedTo.forEach(function(book2, index2){
            messageBody.recommendations[index].recommended.push({
                employeeId: book2.employeeId,
            })
        });             
    });
}

console.log(messageBody)

A much cleaner solution 更清洁的解决方案

for(let recommendation of requestBody.recommendations){
    for(let recommendedTo of recommendation.recommendedTo){
        console.log(recommendation);
        console.log(recommendedTo);
    }
}

While your code works,this is actually a really good usecase for map: 当您的代码有效时,这实际上是map的一个很好的用例:

 const messageBody = {
    recommendations: requestBody.recommendations.map(({book, recommendedTo}) => ({
        book,
        recommended: recommendedTo.map(({employeeId}) => ({employeeId}))
    }))
 };

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM