Json 将对象转换为数组

Json 将对象转换为数组,json,angular,typescript,Json,Angular,Typescript,我的反应如下 dropdown1: {enabled: true, label: "Country", eformVisible: false} dropdown2: {enabled: false, label: "Dropdown2 Label", eformVisible: false, } dropdown3: {enabled: false, label: "Dropdown3 Label", eformVisible

我的反应如下

    dropdown1: {enabled: true, label: "Country", eformVisible: false}
dropdown2: {enabled: false, label: "Dropdown2 Label", eformVisible: false, }
dropdown3: {enabled: false, label: "Dropdown3 Label", eformVisible: false, mandatory: "NOT_MANDATORY[enter link description here][1]", order: 32}
dropdown4: {enabled: false, label: "Dropdown4 Label", eformVisible: false, }
dropdown5: {enabled: false, label: "Dropdown5 Label", eformVisible: false, }
text1: {enabled: true, label: "Text1 Custom field", eformVisible: false, mandatory: "ADMIN_API", order: 0, …}
text2: {enabled: false, label: "Text2 Label ", eformVisible: false, mandatory: "NOT_MANDATORY", order: 1, …}
text3: {enabled: false, label: "Text3 Label ", eformVisible: false, mandatory: "NOT_MANDATORY", order: 2, …}
text4: {enabled: false, label: "Text4 Label ", eformVisible: false, mandatory: "NOT_MANDATORY", order: 3, …}
text5: {enabled: false, label: "Text5 Label ", eformVisible: false, mandatory: "NOT_MANDATORY", order: 4, …}
text6: {enabled: false, label: "Text6 Label ", eformVisible: false, mandatory: "NOT_MANDATORY", order: 5, …}
将文本1、文本2、文本3转换为文本数组,并将相同的下拉对象移动到下拉数组中。最后,如果我没有错,我需要使用for循环绑定此文本框和下拉值。下面是我编写的示例代码


但从这一点上很难找到哪个是文本框并下拉以角度绑定。

您可以按键浏览对象并构建groupedItem对象,如下所示:

常量对象={ 下拉列表1:{启用:true,标签:Country,eformVisible:false}, dropdown2:{enabled:false,label:dropdown2 label,eformVisible:false,}, dropdown3:{enabled:false,label:dropdown3 label,eformVisible:false,mandatory:NOT_mandatory[在此处输入链接说明][1],顺序:32}, dropdown4:{enabled:false,label:dropdown4 label,eformVisible:false,}, dropdown5:{enabled:false,label:dropdown5 label,eformVisible:false,}, text1:{enabled:true,label:text1自定义字段,eformVisible:false,强制:ADMIN_API,顺序:0}, text2:{enabled:false,label:text2 label,eformVisible:false,mandatory:NOT_mandatory,order:1}, text3:{enabled:false,label:text3 label,eformVisible:false,mandatory:NOT_mandatory,order:2}, text4:{enabled:false,label:text4 label,eformVisible:false,mandatory:NOT_mandatory,order:3}, text5:{enabled:false,label:text5 label,eformVisible:false,mandatory:NOT_mandatory,order:4}, text6:{enabled:false,label:text6 label,eformVisible:false,mandatory:NOT_mandatory,order:5} }; const grouped={text:[],下拉列表:[]}; Object.keysobj.forEachkey=>{ key.includes'text'?grouped.text.push{…obj[key],initialKey:key}:grouped.dropdown.push{…obj[key],initialKey:key}; };
您可以按键浏览对象并生成groupedItem对象,如下所示:

常量对象={ 下拉列表1:{启用:true,标签:Country,eformVisible:false}, dropdown2:{enabled:false,label:dropdown2 label,eformVisible:false,}, dropdown3:{enabled:false,label:dropdown3 label,eformVisible:false,mandatory:NOT_mandatory[在此处输入链接说明][1],顺序:32}, dropdown4:{enabled:false,label:dropdown4 label,eformVisible:false,}, dropdown5:{enabled:false,label:dropdown5 label,eformVisible:false,}, text1:{enabled:true,label:text1自定义字段,eformVisible:false,强制:ADMIN_API,顺序:0}, text2:{enabled:false,label:text2 label,eformVisible:false,mandatory:NOT_mandatory,order:1}, text3:{enabled:false,label:text3 label,eformVisible:false,mandatory:NOT_mandatory,order:2}, text4:{enabled:false,label:text4 label,eformVisible:false,mandatory:NOT_mandatory,order:3}, text5:{enabled:false,label:text5 label,eformVisible:false,mandatory:NOT_mandatory,order:4}, text6:{enabled:false,label:text6 label,eformVisible:false,mandatory:NOT_mandatory,order:5} }; const grouped={text:[],下拉列表:[]}; Object.keysobj.forEachkey=>{ key.includes'text'?grouped.text.push{…obj[key],initialKey:key}:grouped.dropdown.push{…obj[key],initialKey:key}; };
创建一个函数,帮助您根据字符串数据键的开头筛选数据:

function filter(data, query){
  return Object.values(Object.keys(data)
  .filter(key => new RegExp('^' + query, 'g').test(key))
  .map((key) => data[key]));
}
然后根据您的需要使用:

console.log(filter(data,'date'));
console.log(filter(data,'text'));
console.log(filter(data,'dropdown'));
洞察


创建一个函数,帮助您根据字符串数据键的开头筛选数据:

function filter(data, query){
  return Object.values(Object.keys(data)
  .filter(key => new RegExp('^' + query, 'g').test(key))
  .map((key) => data[key]));
}
然后根据您的需要使用:

console.log(filter(data,'date'));
console.log(filter(data,'text'));
console.log(filter(data,'dropdown'));
洞察


我对这类问题的解决方案遵循以下结构

const children = Object.keys(obj)
.filter(key => <return true for the keys I want>)
.map(key => <Construct textbox based on obj[key]>)

填空,这将输出一组元素,这些元素可以绑定到父元素

我对这些类型问题的解决方案遵循以下结构

const children = Object.keys(obj)
.filter(key => <return true for the keys I want>)
.map(key => <Construct textbox based on obj[key]>)

填写空格,这将输出一组元素,这些元素可以绑定到父元素

请在问题本身中包含所有相关代码,而不仅仅是StackBlitz或任何外部站点。请参阅以获取更多提示。请在问题本身中包含所有相关代码,而不仅仅是在StackBlitz或任何外部网站上。有关更多提示,请参阅。francesco您的答案有效谢谢。francesco您的答案有效谢谢。