我有一个名为 的数组items
,这是数组内的数据样本:
[
{
"id":"123",
"key":"xxx111@gmail.com",
"status":"attempted"
},
{
"id":"123",
"key":"xxx111@gmail.com",
"status":"waiting"
},
{
"id":"123",
"key":"xxx111@gmail.com",
"status":"completed"
},
{
"id":"123",
"key":"xxx222@gmail.com",
"status":"completed"
},
{
"id":"456",
"key":"xxx333@gmail.com",
"status":"waiting"
},
{
"id":"456",
"key":"xxx444@gmail.com",
"status":"attempted"
},
{
"id":"456",
"key":"xxx444@gmail.com",
"status":"failed"
},
{
"id":"456",
"key":"xxx555@gmail.com",
"status":"attempted"
},
{
"id":"456",
"key":"xxx555@gmail.com",
"status":"waiting"
}
]
我想对我的数组中的项目进行分组和过滤。我发现我可以创建第二个数组并将所有符合我的条件的项目推送到第二个数组中,但不确定如何实现这一点。
以下是分组和过滤的标准:
- Group by
id
andkey
这样所有具有相同id
and的记录key
都被分组在一起,并且可以在下一步中进行过滤。所以在这里我可以动态创建数组,它们看起来像这样:
阵列 1:
[
{
"id":"123",
"key":"xxx111@gmail.com",
"status":"attempted"
},
{
"id":"123",
"key":"xxx111@gmail.com",
"status":"waiting"
},
{
"id":"123",
"key":"xxx111@gmail.com",
"status":"completed"
}
]
阵列 2:
[
{
"id":"123",
"key":"xxx222@gmail.com",
"status":"completed"
}
]
阵列 3:
[
{
"id":"456",
"key":"xxx333@gmail.com",
"status":"waiting"
}
]
阵列 4:
[
{
"id":"456",
"key":"xxx444@gmail.com",
"status":"attempted"
},
{
"id":"456",
"key":"xxx444@gmail.com",
"status":"failed"
}
]
阵列 5:
[
{
"id":"456",
"key":"xxx555@gmail.com",
"status":"attempted"
},
{
"id":"456",
"key":"xxx555@gmail.com",
"status":"waiting"
}
]
- 上面的数组应该被过滤
status
:如果在一个数组中我有状态failed
或者completed
我不想再考虑这个数组。符合条件的数组中的数据可以推送到我的最终数组,我只需要id
和key
归档,我不需要查看不同的状态:
最终数组:
[
{
"id":"456",
"key":"xxx333@gmail.com"
},
{
"id":"456",
"key":"xxx555@gmail.com"
}
]
到目前为止,我已经尝试过了,但我无法得到想要的结果:
if(items.length >= 1) {
for (i = 0; i < items.length; i++) {
key = items[i]["key"];
status = items[i]["status"];
id = items[i]["id"];
var arr=[];
if(items[i]["key"]==key && items[i]["id"]==id) {
arr.push(items[i]["key"])
arr.push(items[i]["id"])
}
}
任何帮助,将不胜感激。