I_Love_Emma_Watson
@I_Love_Emma_Watson

Как преобразовать массив в такой объект?

Помогите плиз, нужно преобразовать такой массив: 5a6a399bec58f205509495.png
в такой объект: 5a6a39b3276cb057115305.png
но при этом количество ключей может меняться, например может добавиться штат, типа city_name: "Chicago", state: "IL"
var array = [
    "weather_c",
    "+30",
    "population",
    10000000,
    "city_name",
    "Los angeles",
    "weather_c",
    "+15",
    "population",
    5000000,
    "city_name",
    "Chicago"
  ];
  • Вопрос задан
  • 119 просмотров
Решения вопроса 1
  • sergiks
    @sergiks
    ╚═══════════╝
    Надо делать пустой объект и двигаясь по массиву набивать его парами ключ-значение.
    Как только пошёл повтор ключа – это новый объект. Тот заполненный выкидываем в результат, и начинаем заполнять новый пустой.

    var arr = [
        "weather_c",
        "+30",
        "population",
        10000000,
        "city_name",
        "Los angeles",
        "weather_c",
        "+15",
        "population",
        5000000,
        "city_name",
        "Chicago"
      ];
    
    
    var data = {}
    var index = 1;
    var i, key, value;
    var obj = {}
    
    for(i = 1; i < arr.length; i+=2) {
      key = arr[i-1];
      value = arr[i];
      if( obj.hasOwnProperty(key)) {
        data[index.toString()] = Object.assign({}, obj);
        index++;
        obj = {}
      }
      obj[key] = value;
    }
    data[index.toString()] = Object.assign({}, obj);
    
    JSON.stringify(data)
    /*
    {"1": {"weather_c":"+30","population":10000000,"city_name":"Los angeles"},
    "2": {"weather_c":"+15","population":5000000,"city_name":"Chicago"}}
    */
    Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

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

Войти через TM ID
Похожие вопросы