我有一个这样的数组(从 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)
关于如何考虑扁平化的任何提示将不胜感激!
该.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)
结果对象中(字符串)键的顺序将按照它们插入的顺序出现,因此由于每个内部数组的对象顺序不同,因此合并后生成的对象的键顺序也会不同. 然而,这并不重要,因为依赖对象键排序通常不是最好的主意,并且可以使用其他方法更可靠地完成。