Javascript foreach(多数组)

问题描述 投票:0回答:2

我得到了这个javascript代码,其中我试图访问“recommendedTo”数组但是,当我试图通过foreach访问它时它只是作为[数组]返回而不是数组的确切值。

我究竟做错了什么?

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)
javascript arrays
2个回答
0
投票

更清洁的解决方案

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

0
投票

当你的代码工作时,这实际上是一个非常好的map用例:

 const messageBody = {
    recommendations: requestBody.recommendations.map(({book, recommendedTo}) => ({
        book,
        recommended: recommendedTo.map(({employeeId}) => ({employeeId}))
    }))
 };
© www.soinside.com 2019 - 2024. All rights reserved.