如何更新我收藏的照片对象数组上的标志

How do I update a flag on a array of Photo objects that I favorited a particular photo?

本文关键字:照片 对象 数组 标志 收藏 何更新 更新      更新时间:2023-09-26

我有一个简单的照片分类数组,看起来像这样:

[
  {
    category: 1001,
    photos: [
      { id: 100101, url: 'url.com/100101', favorite: false},
      { id: 100102, url: 'url.com/100102', favorite: false}
    ]
  },
  {
    category: 1002,
    photos: [
      { id: 100201, url: 'url.com/100201', favorite: false},
      { id: 100202, url: 'url.com/100202', favorite: false}
    ]
  }
]

如果我最喜欢的photoId 100201,我如何更新我的数组,使100201更新为favorite: true ?我想看看lodash文档,但我不确定我应该找什么。

谢谢

假设该数组存储在名为categories的变量中,并假设(根据您提供的数据)每个照片id都以确切的类别id开头,则:

function inCategory(category: string, id: string): boolean {
    return id.substring(0, category.length) === category;
}
function favorite(photoId: number): void {
    for (let i = 0; i < categories.length; i++) {
        if (inCategory(categories[i].category.toString(), photoId.toString())) {
            for (let j = 0; j < categories[i].photos.length; j++) {
                if (categories[i].photos[j].id === photoId) {
                    categories[i].photos[j].favorite = true;
                }
            }
        }
    }
}

(code in playground)