![](/img/trans.png)
[英]Object from comprehension in CoffeeScript [dict/hash comprehensions]
[英]CoffeeScript - transform object into a matrix using comprehensions
我有一個 object 的形式: {a: [1,2,3,4], b: [5,6,7,8]}
我想使用理解將它轉換為一個 arrays 的數組 3項目:
[
['a', 0, 1], ['a', 1, 2], ['a', 2, 3], ['a', 3, 4],
['b', 0, 5], ['b', 1, 6], ['b', 2, 7], ['b', 3, 8]
]
我試過這個( [x,y,v] for v, y in h for x, h of obj )
但它給出了一個包含 4 個元素的兩個元素的數組:
[
[ [], [], [], [] ],
[ [], [], [], [] ]
]
如何跳過第二級的數組?
當您拆分兩個推導時,更容易看到:
result = for x, h of obj
for v, y in h
[x,y,v]
您的結果將是 2 級深,因為每個理解都返回一個數組。
第一個深度數組將為 object 中的每個元素提供一個數組。
這些 arrays 中的每一個都將包含 object 中一個鍵的結果
解決此問題的最佳方法是將您想要的 3 個元素 arrays 中的每一個推入一個單獨的數組中。
result = []
for x, h of obj
for v, y in h
result.push [x,y,v]
或者使用緊湊格式:
result = []
result.push [x,y,v] for v, y in h for x, h of obj
如果您已經擁有像lodash這樣的實用程序庫,則可以使用flatten
方法。 但這將涉及對您的 arrays 的另一次迭代,因此如果性能很重要並且您擁有非常大的數據集,則不實用
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.