У меня есть пример динамического json ниже: {"fields": {"a": {"#type": "textfield"}, "d": {"#type": "label" ...

0
Swaroop Gupta Voleti 6 Янв 2021 в 09:30

1 ответ

Лучший ответ

Вы можете сделать следующее, используя сокращение,

obj = {
  "fields": {
    "a": {
      "#type": "textfield"
    },
    "d": {
      "#type": "label"
    }, 
    "f": {
      "#type": "email"
    },
    "g": {
      "#type": "phone"
    },
    "j": {
      "#type": "label"
    }
  }
}

ret = Object.keys(obj.fields).reduce((prev, curr) => {
  breakPointFound = false;
  Object.values(obj.fields[curr]).forEach(item => {
    if(item === 'label') {
      breakPointFound = true;
    }
  })
  if(breakPointFound) {
    prev.push({ fields: {
      [curr]: obj.fields[curr],
    }});
    prev.push({fields: {}});
  } else {
    if(prev.length) {
        prev[prev.length - 1].fields[curr] = obj.fields[curr];  
    }
    else {
      prev.push({fields: { [curr]: obj.fields[curr]}});
    }
  }
  return prev;
}, []);

if(Object.keys(ret[ret.length - 1].fields).length === 0) {
  ret.splice(ret.length -1);
}
console.log(ret);
1
sabbir.alam 6 Янв 2021 в 06:48