繁体   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