Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 数组值中的对象名称_Javascript_Arrays_Object_Javascript Objects - Fatal编程技术网

Javascript 数组值中的对象名称

Javascript 数组值中的对象名称,javascript,arrays,object,javascript-objects,Javascript,Arrays,Object,Javascript Objects,我有一个包含一些值的数组: let typeArray = ["name", "strret", "car", "type"]; 我有一个目标: let formDefinitionObject = {schema:{}} 我希望formDefinitionObject对象类似于: let formDefinitionObject = { schema: { name: { type: 'string', title: 'Name', requ

我有一个包含一些值的数组:

let typeArray = ["name", "strret", "car", "type"];
我有一个目标:

let formDefinitionObject = {schema:{}}
我希望formDefinitionObject对象类似于:

let formDefinitionObject = {
  schema: {
    name: {
      type: 'string',
      title: 'Name',
      required: true
    },
    strret: {
      type: 'string',
      title: 'Strret'
    },
    car: {
      type: 'string',
      title: 'Car'
    },
    type: {
      type: 'string',
      title: 'Type'
    }
  }
}
我希望数组中的每个项都是formDefinitionObject.schema对象中的对象。例如,如果我在数组typeArray中再添加一个项目。按“country”可在formDefinitionObject.schema对象中自动添加此对象。

您可以在带有设置陷阱的typeArray上使用代理,因此每次将新值推送到代理数组时,您也可以向架构添加新属性。这样可以模拟观察者模式

您还可以创建一些模式来添加其他属性,如required,例如name:prop1:prop2,但通过这种方式,值固定为true

let typeArray=[名称:必选,stret,car,type]; 让formDefinitionObject={ 架构:{} } 设proxyArray=新的ProxytypeArray{ setobj、prop、value{ 如果prop!=“length”addToSchemaformDefinitionObject.schema,则为值; 返回Reflect.set…参数; } } 函数大写字符串{ 返回string.charAt0.toUpperCase+string.slice1; } 函数addToSchemaschema,prop{ 常量[名称,…参数]=属性拆分“:”; 架构[名称]={ 键入:“字符串”, 标题:大写名称 } params.forEachparam=>schema[name][param]=true; 返回模式; } proxyArray.ReducedToSchema,formDefinitionObject.schema; proxyArray.push'email:required:isEmail'; proxyArray.push'phone';
console.logformDefinitionObject尽管您没有进一步说明字段是如何必需的,或者任何字段是否必须作为字符串,但这里有一个基于您目前提供的解决方案

下一个代码段完成了这项工作,它有一些解释:

让typeArray=['name','strret','car','type'], formDefinitionObject={ 架构:{} }; /**在typeArray中循环并填充formDefinitionObject.schema**/ typeArray.forEachel=>{ 设currObj={ 类型:'string',/**您没有说明如何确定类型**/ 标题:el[0]。toUpperCase+el.substring1,/**第一个字母大写的标题,如您在问题中提供的。您可以使用el而不是el[0]。如果要按原样打印,请使用toUpperCase+el.substring1**/ }; el=='name'&&currObj['required']=true;/**您没有说明如何确定字段是否必须是必需的。我只是根据需要查看了名称,所以我做了一个基本但愚蠢的检查,如果当前元素是name,则向其添加必需的名称**/ formDefinitionObject.schema[el]=currObj;/**将当前记录添加到schema属性**/ }; console.dirformDefinitionObject;/**打印结果**/无法理解如何要求:true适合。剩下的事情可以做如下

var getFormDefinition=functionarr{ 函数getSchemaobjar{ 返回arr.mapd=>{ [d] :{ 类型:typeofd, 标题:d } } .reducea,b=>{…a,…b} } var schemaObj=getschemaobjar arr.push=功能…d{ Object.assignschemaObj,getSchemaObjd 返回Array.prototype.push.callarr,…d } 返回{ 模式:schemaObj } } var typeArray=[name,stret,car,type]; var result=getFormDefinitiontypeArray console.logresult typeArray.push'nitish'
console.logresultWelcome到堆栈溢出!请拿着你的徽章!通读全文,尤其是你在这里的最佳选择是做你的研究,对于相关的话题,等等,然后试一试。如果你在做了更多的研究和搜索后陷入困境,无法摆脱困境,请发布一份你的尝试报告,具体说明你陷入困境的地方,以及逻辑告诉你名字应该是什么:正确,但其他人都不应该。人们会很乐意帮忙的。你试过使用for循环吗?您如何决定哪些项目应该是必需的?但是您如何决定字段必须是必需的?是否每个字段的类型都必须是字符串?