[英]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.