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_Json - Fatal编程技术网

Javascript 转换对象数组的结构

Javascript 转换对象数组的结构,javascript,arrays,json,Javascript,Arrays,Json,我有一组对象: [{ "Germany": "text", "Brazil": "50.00" }, { "Germany": "1000.00", "Brazil": "1100.00" }, { "Germany": "999999999", "Brazil&q

我有一组对象:

[{
  "Germany": "text",
  "Brazil": "50.00"
}, {
  "Germany": "1000.00",
  "Brazil": "1100.00"
}, {
  "Germany": "999999999",
  "Brazil": "9999999",
  "France": "12"
}]
我想将其转换为以下结构:

[{
  "name": "Germany",
  "value": 999999999
}, {
  "name": "Brazil",
  "value": 999999999
}, {
  "name": "France",
  "value": 12
}]
其中,在第二个对象中,我们对第一个对象中的每个关键点使用较高的值

编辑:值也可以是文本,如德语:text,在这种情况下,该值应被忽略。我在上面的第一个对象中添加了这种情况。

您可以使用reduce函数来获得预期的输出。在reduce中,您可以获取当前对象的Object.entries,以便按国家名称分组

常数arr=[{ 德国:100.00, 巴西:50.00 }, { 德国:1000.00, 巴西:1100.00 }, { 德国:99999999, 巴西:9999999, 法国:12 }]; const result=Object.valuesarr.reducea,e=>{ Object.entriese.forEach[名称,值]=>{ a[name]??={name,值:0}; a[name].value=a[name]。值>值?a[name]。值:值 }; 返回a; },{}; console.logresult 您可以使用reduce函数来获得预期的输出。在reduce中,您可以获取当前对象的Object.entries,以便按国家名称分组

常数arr=[{ 德国:100.00, 巴西:50.00 }, { 德国:1000.00, 巴西:1100.00 }, { 德国:99999999, 巴西:9999999, 法国:12 }]; const result=Object.valuesarr.reducea,e=>{ Object.entriese.forEach[名称,值]=>{ a[name]??={name,值:0}; a[name].value=a[name]。值>值?a[name]。值:值 }; 返回a; },{}; console.logresult 可以使用.reduce迭代对象,使用.forEach迭代每个对象项:

常数数据=[ {德国:100.00,巴西:50.00}, {德国:1000.00,巴西:1100.00}, {德国:文本,巴西:999999,法国:12} ]; const res=Object.valuesdata.reduceac,item=>{ Object.entrieSite.forEach[名称,值]=>{ 如果!isNaNvalue{ const prev=附件[名称]; 如果!prev acc[name]={name,value}; 否则ifprev.value 常数数据=[ {德国:100.00,巴西:50.00}, {德国:1000.00,巴西:1100.00}, {德国:文本,巴西:999999,法国:12} ]; const res=Object.valuesdata.reduceac,item=>{ Object.entrieSite.forEach[名称,值]=>{ 如果!isNaNvalue{ const prev=附件[名称]; 如果!prev acc[name]={name,value}; 否则ifprev.valueconsole.logres;到目前为止,您自己尝试了什么来解决这个问题?…我们对第一个对象中的每个关键点使用更高的值-那么为什么最终结果中会有法国?如果最后一个对象中巴西的值为999会怎么样?那么结果中的值是1100.00吗?对于任何初学者来说,这是一项提高javascript技能的完美任务。尝试将问题分为不同的步骤。1.保存所有对象的关键帧并删除重复项。2.对于每个键,获取与该键匹配的所有值,并仅保存最大值。3.创建一个新列表,其中包含按所需格式设置的键值对中的对象。提示:可以使用Object类为数组中的每个对象获取键、值和键值对条目。提示2:对于stackoverflow来说,这不是一个真正合适的问题。但是,您可以搜索步骤1-3的答案。@Andreas确切地说,到目前为止,您自己尝试了什么来解决这个问题?…我们对第一个对象中的每个键都使用较高的值-那么为什么最终结果中会出现France?如果最后一个对象中巴西的值为999会怎么样?那么结果中的值是1100.00吗?对于任何初学者来说,这是一项提高javascript技能的完美任务。尝试将问题分为不同的步骤。1.保存所有对象的关键帧并删除重复项。2.对于每个键,获取与该键匹配的所有值,并仅保存最大值。3.创建一个新列表,其中包含按所需格式设置的键值对中的对象。提示:可以使用Object类为数组中的每个对象获取键、值和键值对条目。提示2:对于stackoverflow来说,这不是一个真正合适的问题。但是,您可以搜索步骤1-3的答案。@Andreas确切地说,如果我有文本而不是数字呢?我应该在哪里检查它是否是一个仅用于比较的数字?@stungbeet您可以在此场景中编辑您的问题和预期结果吗?编辑了主要问题。@stungbeet我编辑了答案以跳过具有非数字值的记录获取类型为“未知”的参数不可分配给类型为“数字”的参数编辑:通过将值作为任意操作进行修复如果我有文本而不是其中一个数字?我应该在哪里检查它是否是一个仅用于比较的数字?@stungbeet您可以编辑您的问题和此场景的预期结果吗?编辑了主要问题。@stungbeet我编辑了 ited答案为跳过具有非数值的记录I get参数类型“unknown”不可分配给参数类型“number”edit:通过将值设置为任意值来修复