Javascript 使用forEach在vanilla JS中迭代数组对象

Javascript 使用forEach在vanilla JS中迭代数组对象,javascript,Javascript,我有类似上面的数据。每个键代表一个用户名,与之关联的数组是另一个对象,该对象具有与该用户相关的字段,例如:{action:“paid”,user:“doug101”,member:true} 我正在尝试运行一个循环来遍历每个用户键,并查看它们是否有操作的未付值,但我仍然无法确定如何继续使用下面的代码来实现这一点 const users = {terry1: [{action: "unpaid", user: "terry1", member: true}, {action: "paid", us

我有类似上面的数据。每个键代表一个用户名,与之关联的数组是另一个对象,该对象具有与该用户相关的字段,例如:
{action:“paid”,user:“doug101”,member:true}

我正在尝试运行一个循环来遍历每个用户键,并查看它们是否有
操作的
未付
值,但我仍然无法确定如何继续使用下面的代码来实现这一点

const users = {terry1: [{action: "unpaid", user: "terry1", member: true}, {action: "paid", user: "terry1", member: true}], malcomla3: [{action: "paid", user: "malcomla3", member: true}], jonny:[{action: "paid", user: "jonny", member: true}]}

如果要修改数组并获取数组中的所有
未付
对象,请遍历键并筛选操作为
未付

 for (var key in users) {
     users[key].forEach(x => {

     })

  }

如果要修改数组并获取数组中的所有
未付
对象,请遍历键并筛选操作为
未付

 for (var key in users) {
     users[key].forEach(x => {

     })

  }

您可以从对象中获取条目,搜索所需的键,然后使用该数组,或将其重建为对象,如下所示:

const用户={
特里:[{动作:“付费”},{酷:假}],
艾丽斯:[{行动:“未付”}]
};
const unpaid=Object.entries(users.filter(([name,fields])=>fields.find(field=>field.action==“unpaid”);
const unpaddy_as_object=object.assign(…unpaddy.map([k,v])=>({[k]:v}));

console.log(未支付的\u作为\u对象)您可以从对象中获取条目,搜索所需的键,然后使用该数组,或按如下方式将其重建为对象:

const用户={
特里:[{动作:“付费”},{酷:假}],
艾丽斯:[{行动:“未付”}]
};
const unpaid=Object.entries(users.filter(([name,fields])=>fields.find(field=>field.action==“unpaid”);
const unpaddy_as_object=object.assign(…unpaddy.map([k,v])=>({[k]:v}));

console.log(未支付的\u作为\u对象)如果您真的开始使用
forEach
,那么这个代码段应该可以工作


const users={terry1:[{action:“unpaid”,user:“terry1”,member:true},{action:“paid”,user:“terry1”,member:true}],malcomla3:[{action:“paid”,user:“malcomla3”,member:true}],jonny:[{action:“paid”,user:“jonny”,member:true}];
for(var密钥输入用户){
用户[key].forEach(用户=>{
if(user.hasOwnProperty(“操作”)&&user.action==“未付”){
console.log(user.user+“未付”)
}
})

}
如果您真的开始使用
forEach
,那么这个代码片段应该可以工作


const users={terry1:[{action:“unpaid”,user:“terry1”,member:true},{action:“paid”,user:“terry1”,member:true}],malcomla3:[{action:“paid”,user:“malcomla3”,member:true}],jonny:[{action:“paid”,user:“jonny”,member:true}];
for(var密钥输入用户){
用户[key].forEach(用户=>{
if(user.hasOwnProperty(“操作”)&&user.action==“未付”){
console.log(user.user+“未付”)
}
})

}
要完成您启动的代码,请使用
forEach
,下面是操作方法,使用
.hasOwnProperty()
检查数组中的对象是否为
操作
,如果是,是否为“未付”

注意,根据一条评论,我用第三项增加了一个users对象数组

堆栈片段

const用户={
terry1:[
{操作:“付费”,用户:“terry1”,成员:true},
{操作:“未付”,用户:“terry1”,成员:true},
{操作:“付费”,用户:“terry1”,成员:true}
],
马尔科姆拉3:[
{操作:“付费”,用户:“malcomla3”,成员:true}
],
乔尼:[
{操作:“付费”,用户:“jonny”,成员:true}
]
}
for(var密钥输入用户){
用户[key].forEach(函数(项){
对于(var键2输入项){
if(项目hasOwnProperty(“行动”)和项目[key2]=“未付”){
console.log(键“未付款”)
}
}
})

}
要完成您启动的代码,请使用
forEach
,下面是操作方法,使用
.hasOwnProperty()
检查数组中的对象是否为
操作
,如果是,是否为“未付”

注意,根据一条评论,我用第三项增加了一个users对象数组

堆栈片段

const用户={
terry1:[
{操作:“付费”,用户:“terry1”,成员:true},
{操作:“未付”,用户:“terry1”,成员:true},
{操作:“付费”,用户:“terry1”,成员:true}
],
马尔科姆拉3:[
{操作:“付费”,用户:“malcomla3”,成员:true}
],
乔尼:[
{操作:“付费”,用户:“jonny”,成员:true}
]
}
for(var密钥输入用户){
用户[key].forEach(函数(项){
对于(var键2输入项){
if(项目hasOwnProperty(“行动”)和项目[key2]=“未付”){
console.log(键“未付款”)
}
}
})

}
您能否发布
用户的实际完整数据(不仅仅是
数组(2)
)?您是否尝试过:
如果(x.action==“unpaid”)console.log(x.user)
在您的
forEach
功能块中?您正在显示属性为数组的示例,但您的描述(即
{action:“paid”,user:“doug101”,member:true}
)表明它们是对象。是哪一个?或者它们是对象数组。
const user={terry1:[{action:“unpaid”,user:“terry1”,member:true},{action:“paid”,user:“terry1”,member:true}],malcomla3:[{action:“paid”,user:“malcomla3”,member:true}],jonny:[{action:“paid”,user:“jonny”,member:true}]
@MarkMeyer是,对象数组…我刚刚编辑了上面的问题。很抱歉造成混淆,您是否可以发布
用户的实际完整数据(不仅仅是
数组(2)
)?您是否尝试过:
如果(x.action==“unpaid”)console.log(x.user)
在您的
forEach
功能块中?您显示的是数组属性的示例,但您的描述(即
{action:“paid”,user:“doug101”,