gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 00:34:59 25 4
gpt4 key购买 nike

我得到了这个样本数据。

"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 并比较 Id 值并为该 bool 值设置一些计数器。因此,在深入研究 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))

关于Javascript - 从对象数组中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53694969/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com