簡體   English   中英

按鍵對對象數組進行分組

[英]Group array of objects by key

我有一個包含ID的對象數組(非唯一)

[ { a: 1 }, { a: 1 }, { a: 2 }, { a: 1 }, { a: 1 }, { a: 1 } ]

我試圖按對象的鍵對對象進行分組,例如:

[   [{ a: 1 }, { a: 1 }],   [{ a: 2 }],   [{ a: 1 }, { a: 1 }, { a: 1 }]   ]

最初,我想遍歷每個對象,然后遞歸檢查所有先前的鍵-但是由於列表將包含數百個對象,因此效率不高。

有內置的lodash方法適合嗎? 否則什么是最好的方法

您的問題很難理解,但是僅通過單個輸入/輸出示例(不知道數據的底層結構),您可以執行以下操作:

var input = [ { a: 1 }, { a: 1 }, { a: 2 }, { a: 1 }, { a: 1 }, { a: 1 } ]

// function that compares equality of your objects
function matches(a, b){
  return ...
}

var output = [[input[0]]]
var cur = output[0]
for(var i=1; i<input.length; i++){      
  // if the next item doesn't match the previous,
  // create the next sub array
  if(!matches(input[i], input[i-1])){ 
    cur = [input[i]]
    output.push(cur)
  }
  cur.push(input[i])
}

但是,從數據和需求的角度看,似乎您可能需要重新考慮數據結構。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM