Френдлист нужно было делать массивом, а не объектом и id делать уникальным. Тогда бы было проще его перебирать и искать и фильтровать. Или вообще классом и через геттер вытаскивать нужные связи.
Подскажи, а можно таким образом делать графы, или это некорректно ? Ниже: const cell_1 = { nearby: [ ] } const cell_2 = { nearby: [ ] } cell_1.nearby.push(cell_2); cell_2.nearby.push(cell_1); console.log(cell_1.nearby); // вернет Array с одним элементом. ... и так далее добавляем сколько угодно объектов ( в моем примере соседние клетки). То-есть запушиваем в массив саму ссылку на существующий объект.
Привет:) Да, так тоже можно, как я сказал важно что бы у вершин хранилась инфа о соседях, концепцию ты понял. Но с таким представлениям будет неудобно работать. Если граф статический то подойдет, но представь что у тебя вершины графа задаются динамически, скажем в цикле в зависимости от каких то входящих данных и ты не знаешь точное количество вершин которое в итоге получиться. В случае хранения в обьекте ты сможешь задавать их так: const graph = {}; for(let i = 0; i < n; ...) { const vertexId = `${someTemolateForId}`; graph[vertexId].nearby.push(nearbyVertextId) } В случае хранения в отдельных переменных тебе придется все переменные вершин задать выше функции генерации графа, но ты не сможешь этого сделать так как не знаешь точного количества вершин. const vertex1 = {}; ... И еще будут траблы с областью видимости переменных вершин. Поэтому удобнее будет, если вершины будут лежать в одном месте(массив либо объект) для дальнейшей работы с графом. А по поводу того пушить ли саму ссылку вместо айдишки, то лучше все же так не делать, так как ты можешь модифицировать вершину из нескольких мест - потенциальное место для багов. Хотя можно и так, это уже как пожелаешь) Спасибо за вопрос)
Читал "Грокаем алгоритмы" и пришел на твое видео)) Топ контент)))
Спасибо)
Прекрасно объяснено. Хотелось бы услышать практическое применение, какие задачи решает и в каких случаях можно применить. Жду следующих видео)
Спасибо за фидбэк) постараюсь раскрыть в следующих видео)
Огромное спасибо за контент. Наконец-то понял, для чего нужны графы и что это вообще такое.
Спасибо!
Не останавливайся)
Френдлист нужно было делать массивом, а не объектом и id делать уникальным. Тогда бы было проще его перебирать и искать и фильтровать. Или вообще классом и через геттер вытаскивать нужные связи.
шедевральное объяснение
спасибо)
четко и ясно
Вау, интересно :)
Спасибо)
Подскажи, а можно таким образом делать графы, или это некорректно ? Ниже:
const cell_1 = {
nearby: [ ]
}
const cell_2 = {
nearby: [ ]
}
cell_1.nearby.push(cell_2);
cell_2.nearby.push(cell_1);
console.log(cell_1.nearby); // вернет Array с одним элементом.
... и так далее добавляем сколько угодно объектов ( в моем примере соседние клетки).
То-есть запушиваем в массив саму ссылку на существующий объект.
Привет:) Да, так тоже можно, как я сказал важно что бы у вершин хранилась инфа о соседях, концепцию ты понял. Но с таким представлениям будет неудобно работать. Если граф статический то подойдет, но представь что у тебя вершины графа задаются динамически, скажем в цикле в зависимости от каких то входящих данных и ты не знаешь точное количество вершин которое в итоге получиться.
В случае хранения в обьекте ты сможешь задавать их так:
const graph = {};
for(let i = 0; i < n; ...) {
const vertexId = `${someTemolateForId}`;
graph[vertexId].nearby.push(nearbyVertextId)
}
В случае хранения в отдельных переменных тебе придется все переменные вершин задать выше функции генерации графа, но ты не сможешь этого сделать так как не знаешь точного количества вершин.
const vertex1 = {};
...
И еще будут траблы с областью видимости переменных вершин. Поэтому удобнее будет, если вершины будут лежать в одном месте(массив либо объект) для дальнейшей работы с графом.
А по поводу того пушить ли саму ссылку вместо айдишки, то лучше все же так не делать, так как ты можешь модифицировать вершину из нескольких мест - потенциальное место для багов. Хотя можно и так, это уже как пожелаешь) Спасибо за вопрос)
@@aboutit6516 Спасибо тебе )