Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.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_Google Apps Script - Fatal编程技术网

Javascript一对一对象映射(内置函数?)

Javascript一对一对象映射(内置函数?),javascript,arrays,object,google-apps-script,Javascript,Arrays,Object,Google Apps Script,如果我有2个数组属性和数据: 我想创建一个对象统计数组: 通常我只是使用MapoverData[],创建一个临时对象,然后将其推送到statistics[] 但因为我知道数据中的所有其他条目都具有相同的维度和数据类型。我还知道从属性到数据有一对一的映射。javascript中是否有一个内置函数可以输出具有一对一映射的对象数组?类似于properties.mapAlldata或类似的内容。我不希望使用库,因为我是在GAS中的template.html上这样做的。您可以使用和方法。使用方法迭代第二个

如果我有2个数组属性和数据:

我想创建一个对象统计数组:

通常我只是使用MapoverData[],创建一个临时对象,然后将其推送到statistics[]

但因为我知道数据中的所有其他条目都具有相同的维度和数据类型。我还知道从属性到数据有一对一的映射。javascript中是否有一个内置函数可以输出具有一对一映射的对象数组?类似于properties.mapAlldata或类似的内容。我不希望使用库,因为我是在GAS中的template.html上这样做的。

您可以使用和方法。使用方法迭代第二个数组,在该使用方法中生成对象并返回

let res = data.map(arr => properties.reduce((obj, k, i) => Object.assign(obj, { [k]: arr[i] }), {}));
让属性=['name'、'height'、'weight'、'zone'], 数据=[ ['Luke Skywalker',123112',B'], [爪哇岛,12,8,B'], [Hutt',200999',C'] ]; 设res=data.maparr=>properties.reduceobj,k,i=>Object.assignobj,{[k]:arr[i]},{}; console.logres您可以使用和方法。使用方法迭代第二个数组,在该使用方法中生成对象并返回

let res = data.map(arr => properties.reduce((obj, k, i) => Object.assign(obj, { [k]: arr[i] }), {}));
让属性=['name'、'height'、'weight'、'zone'], 数据=[ ['Luke Skywalker',123112',B'], [爪哇岛,12,8,B'], [Hutt',200999',C'] ]; 设res=data.maparr=>properties.reduceobj,k,i=>Object.assignobj,{[k]:arr[i]},{};
console.logres如果属性始终是name、height、weight和zone,那么您可以使用来应用占位符名称并将其值存储在地图中

常数数据=['Luke Skywalker',123112',B'],['Jawa',12,8',B'],['Hutt',200999',C']; const stats=data.map[姓名、身高、体重、区域]=>{ 名称 身高 重量 区 }
console.logstats如果属性始终是name、height、weight和zone,那么您可以使用来应用占位符名称并将值存储在地图中

常数数据=['Luke Skywalker',123112',B'],['Jawa',12,8',B'],['Hutt',200999',C']; const stats=data.map[姓名、身高、体重、区域]=>{ 名称 身高 重量 区 }
logstats您可以通过获取用于构建命名键的属性数组来映射新对象,并使用收集所有对象

变量属性=['name'、'height'、'weight'、'zone'], 数据=['Luke Skywalker',123112',B'],['Jawa',12,8',B'],['Hutt',200999',C'], statistics=data.mapa=>Object.assign…properties.mapk,i=>{[k]:a[i]}; 控制台.日志统计;
.as console wrapper{max height:100%!important;top:0;}您可以通过获取用于构建命名键的属性数组来映射新对象,并使用收集所有对象

变量属性=['name'、'height'、'weight'、'zone'], 数据=['Luke Skywalker',123112',B'],['Jawa',12,8',B'],['Hutt',200999',C'], statistics=data.mapa=>Object.assign…properties.mapk,i=>{[k]:a[i]}; 控制台.日志统计; .as console wrapper{max height:100%!important;top:0;}您可以使用数组解构来提取值,并用它们替换返回对象中的命名属性

data.map(([name, height, weight, zone]) => ({name, height, weight, zone}));
让数据=['Luke Skywalker',123112',B'],['Jawa',12,8',B'],['Hutt',200999',C'], 结果=数据.map[姓名,身高,体重,分区]=>{name,height,weight,zone}; console.logr 您可以使用数组分解来提取值,并用它们替换返回对象中的命名属性

data.map(([name, height, weight, zone]) => ({name, height, weight, zone}));
让数据=['Luke Skywalker',123112',B'],['Jawa',12,8',B'],['Hutt',200999',C'], 结果=数据.map[姓名,身高,体重,分区]=>{name,height,weight,zone};
console.logr;属性=[名称、高度、重量、区域];这真的是4个独立变量吗?如果是,它们是什么?或者你的意思是使用字符串吗?回答者,es3是否具有精心挑选的es5功能,如map、reduce等=>或。。。不支持。@请注意,这是在.html中完成的。没有指定这是作为HtmlTemplateevaluate还是真正的客户端代码的一部分完成的,因此箭头和Object.assign很可能可用。properties=[名称、高度、重量、区域];这真的是4个独立变量吗?如果是,它们是什么?或者你的意思是使用字符串吗?回答者,es3是否具有精心挑选的es5功能,如map、reduce等=>或。。。不支持。@请注意,这是在.html中完成的。没有指定这是作为HtmlTemplateevaluate还是真正的客户端代码的一部分完成的,因此箭头和Object.assign很可能是可用的。这一方法不使用通过获取属性的动态方法。是的,就像我上面所说的,因为OP中不清楚属性是否始终是名称、高度、,然后,在Apps Script.html文件中,只要正在编写的代码在运行时进行评估,就可以使用现代JavaScript。如果在调用期间正在执行代码,
那么JS语法可能需要与一致。这一方法不使用通过获取属性的动态方法。是的,就像我上面所说的,因为在OP中不清楚属性是否总是名称、高度、重量和区域,那么…在Apps Script.html文件中,您可以使用现代JavaScript,只要正在编写的代码在运行时进行评估。如果代码是在调用期间执行的,那么JS语法可能需要与一致。这与@FrancisLeigh之前的回答有什么不同吗?除了你的答案信息较少之外?@tehhowch-Ah!我道歉。我不知道这是同一个句法上的答案。我马上删除这个答案:这与@FrancisLeigh之前的答案有什么不同吗?除了你的答案信息较少之外?@tehhowch-Ah!我道歉。我不知道这是同一个句法上的答案。我马上就删除这个答案: