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

Sop*_*cai 0 javascript arrays

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

const array=[
  [{"name":"jason"},{"age":16},{"location":"London"}],
  [{"age":24},{"location":"Tokyo"},{"name":"amy"}]
]
Run Code Online (Sandbox Code Playgroud)

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

const array=[
  {"name":"jason","age":16,"location":"London"},
  {"name":"amy","age":24,"location":"Tokyo"}
]
Run Code Online (Sandbox Code Playgroud)

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

String.replace(/[{}]/g, '');
Run Code Online (Sandbox Code Playgroud)

但是接下来呢?我被困在再次转换回数组。

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

[
  [{"name":"jason"},{"age":16},{"location":"London"}],
  [{"age":24},{"location":"Tokyo"},{"name":"amy"}]
]
Run Code Online (Sandbox Code Playgroud)

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

Nic*_*ons 6

.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);
Run Code Online (Sandbox Code Playgroud)

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