繁体   English   中英

Javscript:从数组中的对象(带有键和值)中删除大括号

[英]Javscript: remove curly brackets from objects(with keys and values) in an array

我有一个这样的数组(数据从 mySql 和 json_encode() 中检索到 PHP,作为 json 对象返回(此数组中共有 19 个元素,并且所有对象在元素中的顺序不同)):

const array=[
  [{"name":"jason"},{"age":16},{"location":"London"}],
  [{"age":24},{"location":"Tokyo"},{"name":"amy"}]
]

如何将它转换为这样的数组,删除大括号?

const array=[
  {"name":"jason","age":16,"location":"London"},
  {"name":"amy","age":24,"location":"Tokyo"}
]

我试图转换为字符串,然后

String.replace(/[{}]/g, '');

但下一步是什么? 我陷入了再次转换回数组的困境。

另一个问题是:对于像这样的数组,何时访问键和值,是否需要重新构造键和值以使它们在每个元素中的顺序相同,否则看起来不太好并且是不容易访问?

[
  [{"name":"jason"},{"age":16},{"location":"London"}],
  [{"age":24},{"location":"Tokyo"},{"name":"amy"}]
]

任何关于如何考虑扁平化的提示将不胜感激!

.replace()方法用于字符串,而不是对象/数组。 相反,您可以将每个内部数组中的对象合并在一起,方法是使用.map()转换每个数组,并Object.assign()合并给定的对象数组。

请参见下面的示例:

 const array = [ [{"name":"jason"},{"age":16},{"location":"London"}], [{"age":24},{"location":"Tokyo"},{"name":"amy"}] ]; const res = array.map(inner => Object.assign({}, ...inner)); console.log(res);

结果对象中的(字符串)键的顺序将按照它们插入的顺序出现,因此由于每个内部数组的 object 顺序不同,因此合并后结果对象的键顺序也会不同. 然而,这应该没有太大关系,因为依赖 object 密钥排序通常不是最好的主意,可以使用其他方法更可靠地完成。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM