Вопрос:

Как мне обновить флаг на массиве объектов Photo, которые мне понравились для конкретной фотографии?

javascript arrays typescript

26 просмотра

1 ответ

2396 Репутация автора

У меня есть простой массив категорий фотографий, который выглядит следующим образом:

[
  {
    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, но я не уверен, что мне следует искать.

Спасибо

Автор: user1354934 Источник Размещён: 22.08.2016 09:19

Ответы (1)


0 плюса

85257 Репутация автора

Допустим, этот массив хранится в переменной с именем categoriesи при условии (на основе предоставленных вами данных), что каждый идентификатор фотографии начинается с точного идентификатора категории, а затем:

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;
                }
            }
        }
    }
}

( код на детской площадке )

Автор: Nitzan Tomer Размещён: 22.08.2016 09:33
Вопросы из категории :
32x32