【发布时间】:2020-10-01 22:48:02
【问题描述】:
可以说,我有如下的对象数组,
data = [{ name: 'A', place: 'chennai', placeChecked:true}
{ name: 'A', place: 'America', placeChecked:true}
{ name: 'A', place: 'America', placeChecked:true}
{ name: 'A', place: 'Delhi', placeChecked:false}
{ name: 'B', place: 'Delhi', placeChecked:false}
{ name: 'B', place: 'Delhi', placeChecked:false}
{ name: 'B', place: 'Canada', placeChecked:true}]
我想过滤列并希望输出如下所示
"name":{"A","B"}
"place":{"Chennai","America","Delhi","Canada"}
"placeChecked":{true,true,false,true}
使用 Object.keys 我可以获取密钥
Object.keys(data[0]).forEach((ele: string) => this.map.set(ele, new Set()));
但无法为相应的键分配布尔值。
data.forEach(keys => {
for (const key in keys) {
this.map.get(key).add(keys[key]);
}
})
【问题讨论】:
-
"name":{"A","B"}或"name":{"A","A","B","B"}? -
为什么
placeChecked中有重复项? -
来自服务器端的重复值。所以需要处理这些数据。名称应该类似于 "name" : {"A","B"}
-
@Sapthika 所以这里
placechecked的值将是倍数,而不仅仅是4 values(如您的预期输出所示),唯一值将只有name和place,对吗? -
@gorak placeChecked 值应仅为 4 个值,如预期输出所示。
标签: javascript arrays object boolean