簡體   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