Как сгладить json в Angular? (На 1 уровень ниже)

У меня такой json (длина 200):

{

  id: 5, 
  date: "2018-05-05"

   tmp: {
       warranty: "no";
       discount: "yes"
    }

},
 .... (and more)

Я хочу создать:

{
  id: 5, 
  date: "2018-05-05"
  warranty: "no";
  discount: "yes"
},

Кто-нибудь может помочь мне преобразовать это?

Можете ли вы опубликовать свои испытания, чтобы помочь?

Jai 03.08.2018 13:47
вот ответ
Efe 03.08.2018 13:49

Это массив объектов? пожалуйста, поставьте правильную структуру

Deepender Sharma 03.08.2018 13:49
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
3
81
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Я создаю пример StackBlizt, чтобы узнать, как это сделать:

https://stackblitz.com/edit/angular-hezrsa

Посмотрите на метод flatJson ().

import { Component } from '@angular/core';

@Component({
  selector: 'my-app',
  templateUrl: './app.component.html',
  styleUrls: [ './app.component.css' ]
})
export class AppComponent  {
  public obj = {};
  private startObj= {
  id: 5, 
  date: "2018-05-05",
  tmp: {
       warranty: "no",
       discount: "yes"
    }

  };


  constructor(){
    this.flatJson();
  }

  flatJson():void{
     for (var prop in this.startObj) {
        console.info(prop);
        if (typeof this.startObj[prop] == 'object'){
              for (var nestedprop in this.startObj[prop]) {
                 this.obj[nestedprop] = this.startObj[prop][nestedprop];
          }
        } else{
           this.obj[prop] = this.startObj[prop];
        }
      }
  }


}

надеюсь, я вам помогу!

Я действительно, очень благодарен вам, но я использовал решение, указанное выше. В любом случае, спасибо.

dybleG 03.08.2018 14:31
Ответ принят как подходящий

Как я бы это сделал, используя новый синтаксис ES6.

  1. Сначала, используя деструктуризацию объекта, извлеките части.
  2. Затем нанесите карту с вашим измененным макетом объекта.

например.

const a = [{
  id: 5, 
  date: "2018-05-05",
  tmp: {
    warranty: "no",
    discount: "yes"
  }
}];


const ret = a.map(v => {
  const {id, date, tmp: {warranty, discount}} = v;
  return {id, date, warranty, discount};
});

console.info(ret);

Спасибо, вы гений !! : D

dybleG 03.08.2018 14:26
var obj  = {
    id: 5, 
  date: "2018-05-05",
   tmp: {
       warranty: "no",
       discount: "yes",
       obj2: {
       nestedone: 'yes'
        }
    }
}

var newObj = new Object();
    addtoArr(obj);
 function addtoArr(obj){
    for(o in obj){
  console.info("key" +o +"value" + obj[o]) ;
        if (typeof obj[o] !='object'){
    newObj[o] = obj[o];
    console.info(newObj);
  }
   else {
    return addtoArr(obj[o]);
}
}
};
console.info(newObj);

This will work everytime even if your nested json is much more nested than what you mentioned above.

Другие вопросы по теме