Задать вопрос
  • Как вытащить уникальные данные из массива объектов?

    0xD34F
    @0xD34F Куратор тега JavaScript
    В каком виде надо получить цвета? Если нужны строки (значения свойства name), то

    [...new Set(data.variations.map(n => n.color.name))]

    Если же нужны сами объекты, тогда

    Object.values(Object.fromEntries(data.variations.map(n => [ n.color.name, n.color ])))
    
    // или
    
    Object.values(data.variations.reduce((acc, { color: n }) => (acc[n.name] ??= n, acc), {}))
    
    // или
    
    data.variations.map(n => n.color).filter(function(n) {
      return !(this[n.name] = this.hasOwnProperty(n.name));
    }, {})

    Можно решить задачу и в более общем виде - сделаем функцию, параметрами которой будут массивоподобный объект (помимо массивов можно будет уникализировать строки, NodeList'ы и т.п.) и функция, принимающая его элемент и возвращающая значение, по которому осуществляется уникализация:

    const unique = (data, key = n => n) =>
      Array.prototype.filter.call(data, function(n) {
        const k = key(n);
        return !this.has(k) && this.add(k);
      }, new Set);
    
    
    // получаем массив уникальных имён цветов
    const uniqueStrColors = unique(data.variations.map(n => n.color.name));
    
    // получаем массив объектов цветов, свойства name которых уникальны
    const uniqueObjColors = unique(data.variations.map(n => n.color), n => n.name);
    Ответ написан
    1 комментарий
  • Как найти в массиве объектов элементы, которые в одном из параметров имеет большее значение, чем у других элементов?

    0xD34F
    @0xD34F Куратор тега JavaScript
    1. Собрать из вложенных массивов один общий
    2. Отсортировать полученный массив
    3. Взять сколько надо первых/последних (зависит от направления сортировки) элементов

    const result = arr
      .flatMap(n => n.subcategories)
      .sort((a, b) => a.rating - b.rating)
      .slice(-2);
    Ответ написан
    Комментировать
  • Как при клике, запускать index.js?

    AlexeyCaTHaR
    @AlexeyCaTHaR
    Можно попробовать создать компонент в магазине, который либо будет обращаться к некоему сервису на backend и получать ссылку на оплату
    Ответ написан
    Комментировать