@vitaliyVH

Как перевести из массива в объект по числу элемента в JS?

Добрый день!

Есть массив
['data-name="SG 553 | Integrale"',
  'data-quality="Classified"',
  'data-minwear="0.00"',
  'data-maxwear="1.00"',
  'data-name="Dual Berettas | Twin Turbo"',
  'data-quality="Classified"',
  'data-minwear="0.00"',
  'data-maxwear="1.00"',
  'data-name="AK-47 | Safety Net"',
  'data-quality="Restricted"',
  'data-minwear="0.00"',
  'data-maxwear="0.60"']


Как мне перевести в объект этот массив, с такой структурой

collection = {
    1: {
        Quality: {
            Classified: {
                'SG 553 | Integrale': 0.00-1.00,
                'Dual Berettas | Twin Turbo': 0.00-1.00,
            }
            Restricted: {
                'AK-47 | Safety Net': 0.00-0,60
}
        }
    }
}

Т.е. каждый первый элемент массива это название каждый, 2-й некое качество, а 3 и 4 это парметры у этого названия (1 элемент)

Коллекций больше, качеств тоже, поэтому такой и неудобный объект.

Уже дней 5 ломаю голову как это перевести, помогите пожалуйста
  • Вопрос задан
  • 901 просмотр
Решения вопроса 1
@StockholmSyndrome
let collection = {1: {Quality: {}}};
for (let i = 0, l = data.length; i < l; i += 4) {
  const [name, quality, minwear, maxwear] = data.slice(i, i + 4).map((n) => n.match(/"(.*?)"/)[1]); 
  collection[1].Quality[quality] = collection[1].Quality[quality] || {}; 
  collection[1].Quality[quality][name] = `${minwear}-${maxwear}`;
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы