javascript - 数组嵌套循环无法按预期工作

标签 javascript arrays object

我正在努力完成以下...

给定数组蛋糕:

const cakes = [
    {id: 1, name: 'chocolate'},
    {id: 2, name: 'strawberry'},
    {id: 3, name: 'mint'}
]

数组“最喜欢的蛋糕”为:

const favCakes = [
    {id: 1, cakeId: 1},
    {id: 2, cakeId: 2}
]

我想在控制台上记录 FAVORITE CAKES 和 NOT FAVORITE CAKES,所以我希望得到这样的结果:

FAVORITE CAKES: 'chocolate'
FAVORITE CAKES: 'strawberry'
NOT FAVORITE CAKES: 'mint'

但正如您从下面的代码片段中看到的那样,它并没有像预期的那样工作。我究竟做错了什么?感谢您的帮助。

const cakes = [
    {id: 1, name: 'chocolate'},
    {id: 2, name: 'strawberry'},
    {id: 3, name: 'mint'}
]

// favorite cakes for logged in user
const favCakes = [
    {id: 1, cakeId: 1},
    {id: 2, cakeId: 2}
]

for (const cake of cakes) {
    for (const fav of favCakes) {
        if (cake.id === fav.cakeId) {
            console.log('FAVORITE CAKE: ', cake.name )
        }
        else if (cake.id !== fav.cakeId) {
            console.log('NOT FAVORITE CAKE: ', cake.name )
        }
    }
}

最佳答案

您过早地检查不喜欢的内容。只有浏览完所有收藏夹后才能确定不喜欢:

for (const cake of cakes) {
    let isFavorite = false; // assume

    for (const fav of favCakes) {
        if (cake.id === fav.cakeId) {
            console.log('FAVORITE CAKE: ', cake.name)
            isFavorite = true;
            break;
        }
    }

    if ( ! isFavorite ) {
        console.log( 'NOT FAVORITE CAKE: ', cake.name )
    }

}

关于javascript - 数组嵌套循环无法按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61672759/

相关文章:

javascript - 将对象数组转换为不同结构对象的数组

Javascript将单选按钮添加到DOM中的对话框

javascript - 如何在 ExtJS 面板的标题中放置下拉菜单?

javascript onsubmit = 函数产生'无法设置 onsubmit : object is null or undefined 的属性

php - Woocommerce 中带有空 $order 参数的 woocommerce_email_attachments Hook

object - 创建对象时获取对象id(Parse.com)

javascript - 如何使用 javascript 添加特定对象?

javascript - 如何从上一个视频结束的确切时间开始播放视频?

javascript - 如何在 php 中按元素按字母顺序排列 json 文件?

Python:按元素比较数组与 float