繁体   English   中英

Javascript-从对象数组中获取数据

[英]Javascript - getting data out of array of objects

我得到了这个样本数据。

"array" : [
    {"Id" : "1", "preferred" : false}, 
    {"Id" : "1", "preferred" : true }, 
    {"Id" : "2", "preferred" : false}, 
    {"Id" : "2", "preferred" : false},]

我想摆脱这种情况。

"array2":[{"Id": 1, numOfTrue: 1, numOfFalse: 1},{"Id": 2, numOfTrue: 0, numOfFalse: 2}]

到目前为止,我得到的是一种如何从初始数组获取唯一ID的方法。

const unique = [...new Set(array.map(item => Id))];

下一步将是一些forEach over数组,比较ID值,并为该布尔值设置一些计数器。 因此,在我探讨forEach解决方案之前,我想问一问是否还有另一种使用方法。 filter().reduce()方法。

您可以使用reduce()构建键为Id的分组对象。 每次您看到Id再次在相应的键处递增该值。 最后,数组将是对象的Object.values()

 let array = [ {"Id" : "1", "preferred" : false}, {"Id" : "1", "preferred" : true }, {"Id" : "2", "preferred" : false}, {"Id" : "2", "preferred" : false} ] let counts = array.reduce((counts, {Id, preferred}) => { // If you haven't seen this Id yet, make a new entry if (!counts[Id]) counts[Id] = {Id, numOfTrue: 0, numOfFalse: 0} // increment the appropriate value: if (preferred) counts[Id].numOfTrue++ else counts[Id].numOfFalse++ return counts }, {}) // get the values array of the object: console.log(Object.values(counts)) 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM