Javascript 根据id循环并将数组放入数组失败
我试图建立一个球员阵列,并根据体育id将他们纳入体育组,但上述逻辑失败了它没有正确分组,在sport_id=1中的玩家应该去id=1的sport,但为什么它没有去?Javascript 根据id循环并将数组放入数组失败,javascript,jquery,loops,Javascript,Jquery,Loops,我试图建立一个球员阵列,并根据体育id将他们纳入体育组,但上述逻辑失败了它没有正确分组,在sport_id=1中的玩家应该去id=1的sport,但为什么它没有去? 上面的循环有什么问题?我想这就是您想要的: var-sports=[{ “id”:1, “名称”:“棒球” }, { “id”:2, “名称”:“足球” }]; 变量playersData=[{ “运动id”:2, “id”:“nv12”, “姓名”:“詹姆斯” }, { “运动id”:2, “id”:“nv11”, “姓名”:“
上面的循环有什么问题?我想这就是您想要的:
var-sports=[{
“id”:1,
“名称”:“棒球”
}, {
“id”:2,
“名称”:“足球”
}];
变量playersData=[{
“运动id”:2,
“id”:“nv12”,
“姓名”:“詹姆斯”
}, {
“运动id”:2,
“id”:“nv11”,
“姓名”:“Jean”
}];
体育。forEach(功能(a){
var-arr=[];
playersData.forEach(函数(b){
如果(a.id==b.sport\u id){
arr.push(b);
}
});
a、 玩家=arr;
});
document.write(“”+JSON.stringify(sports,0,4)+’)代码>您正在循环外部声明您的temp变量,这些变量应限定在循环的范围内,并在每次操作后丢弃
arr.push(tempObj);
obj.players = arr;
您必须将其置于推送之后:
obj.sports = arr;
实际上你需要这个:
var-sports=[{
“id”:1,
“名称”:“棒球”
}, {
“id”:2,
“名称”:“足球”
}];
变量playersData=[{
“运动id”:2,
“id”:“nv12”,
“姓名”:“詹姆斯”
}, {
“运动id”:2,
“id”:“nv11”,
“姓名”:“Jean”
}];
var-arr=[];
美元。每个(运动、功能(i、obj){
$.each(播放器数据、功能(i、播放器){
如果(obj.id==玩家运动id){
var tempObj={
“运动id”:player.sport\u id,
“id”:player.id,
“name”:player.name
};
arr.push(tempObj);
obj.players=arr;
}
});
});
控制台.日志(体育)代码>
希望您想加入体育组,但您正在玩家阵列中添加,请注意,因此请致电
希望它能解决您的问题。请发布通缉令result@NinaScholz在sport_id=1的玩家应该去id=1的sport。你有obj
两次,还有i
。我的问题伙伴在哪里?你能看看Jai下面的答案吗,他不需要清除arr。这不起作用,obj.players将引用$each循环中的playerData。我已经更改了参数名称以便于可读性,您可以在每个参数中看到第一个参数是obj
,第二个参数是player
,而不是obj
。所以,obj.players实际上指的是第一个。你能帮我看一下吗?它不起作用,我试着按照你的逻辑。你可以检查你的数据,如果他们有正确的密钥,我想你需要问你接受答案的人。你的两个代码都起作用了,但我不知道有什么不同,哪一个性能更好。
arr.push(tempObj);
obj.players = arr;
obj.sports = arr;