Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 根据id循环并将数组放入数组失败_Javascript_Jquery_Loops - Fatal编程技术网

Javascript 根据id循环并将数组放入数组失败

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”, “姓名”:“

我试图建立一个球员阵列,并根据体育id将他们纳入体育组,但上述逻辑失败了它没有正确分组,在sport_id=1中的玩家应该去id=1的sport,但为什么它没有去?


上面的循环有什么问题?

我想这就是您想要的:

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;