我正在尝试将我的对象转换为动态列表,因此我在视图上构建而不是在控制器上声明。
我不想这样声明: custom_fields.title_field.type_text_field = []
,因为 title_field
是动态构建的,它可能是任何类型的文本,例如 full_name
我的JSON如下:
"custom_fields":{
"title_dynamic_generate_field":{
"type_text_field":{
"name":"John",
"first_name":"Wick"
},
"type_boolean_field":{
"is_badass": true,
"is_good_movie": true
},
"type_select_field": {
"this_select": 1,
"i_got_this": "nope i didnt got this"
}
},
和:
"custom_fields":{
"title_dynamic_generate_field":{
"type_text_field":[{
"name":"John",
"first_name":"Wick"
}],
"type_boolean_field":[{
"is_badass": true,
"is_good_movie": true
}],
"type_select_field": [{
"this_select": 1,
"i_got_this": "nope i didnt got this"
}]
},
我要转换为数组的对象是type_text_field
,它也可以是动态的,例如type_date_field
或type_select_field
等。
我的 ng-model
是这样的:
ng-model="objectApp.application.applicant.custom_fields[layout.dynamic_title][input.type][input.variable]"
[input.type]
是我要转变为数组,我该如何实现?我尝试使用 $index
,但结果奇怪。
我们可以通过2个解决方案来完成:
关于您的任务有一个问题:
?如果我们在
title_dynamic_generate_field
中有一个以上的type_text_field
,您想要如何处理?因为您想将其转换为"type_text_field":[{},...]
但是,我对问题的答案是:
-
如果我们知道要将主题发送为
json
的动态params
是什么,我的意思是,如果我们知道title_dynamic_generate_field
或type_text_field
的关键是什么,我们会以此样本的形式执行:var data = { "custom_fields": { dynamicParamIs1: 'title_dynamic_generate_field', dynamicParamIs2: 'type_text_field', "title_dynamic_generate_field": { "type_text_field": { "name": "John", "first_name": "Wick" } } } } var paramHelper1 = json.custom_fields[json.custom_fields.dynamicParamIs1]; var paramHelper2 = json.custom_fields.dynamicParamIs2; var solutionA = function (object, as) { var array = []; for (var key in object) { var newObject = object[key]; array.push(newObject); } object[as] = array; } solutionA(paramHelper1, paramHelper2);
我们更改了
json
的模型,该模型可以帮助我们检测(查找(键
-
如果我们不知道动态
params
是什么,我们会这样做:var data = { "custom_fields": { "title_dynamic_generate_field": { "type_text_field": { "name": "John", "first_name": "Wick" } } } } var solutionB = function (json) { var array = []; for (var key in json) { var j1 = json[key]; for (var key2 in j1) { var j2 = j1[key2]; for (var key3 in j2) { var fullObject = j2[key3]; array.push(fullObject); j2[key3] = array; } } } } solutionB(data);
此示例是手册,我们使用嵌套的
for
检测keys
名称