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

loop and put array within array according to id failed

本文关键字:数组 失败 id 循环      更新时间:2023-09-26

http://jsfiddle.net/rw0z9e2j/

var sports = [{
    "id": 1,
        "name": "baseball"
}, {
    "id": 2,
        "name": "Football"
}];
var playersData = [{
    "sport_id": 2,
        "id": "nv12",
        "name": "James"
}, {
    "sport_id": 2,
        "id": "nv11",
        "name": "Jean"
}];
var arr = [],
    tempObj = {};
$.each(sports, function (i, obj) {
    var sport_id = obj.id;
    $.each(playersData, function (i, obj) {
        if (sport_id == obj.sport_id) {
            tempObj = {
                "sport_id": obj.sport_id,
                    "id": obj.id,
                    "name": obj.name
            };
            arr.push(tempObj);
        }
    });
    obj.players = arr;
});
console.log(sports);

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

上面的循环怎么了?

我想这就是您想要的:

var sports = [{
    "id": 1,
    "name": "baseball"
}, {
    "id": 2,
    "name": "Football"
}];
var playersData = [{
    "sport_id": 2,
    "id": "nv12",
    "name": "James"
}, {
    "sport_id": 2,
    "id": "nv11",
    "name": "Jean"
}];
sports.forEach(function (a) {
    var arr = [];
    playersData.forEach(function (b) {
        if (a.id == b.sport_id) {
            arr.push(b);
        }
    });
    a.players = arr;
});
document.write('<pre>' + JSON.stringify(sports, 0, 4) + '</pre>');

您在循环之外声明临时vars,这些应在循环的范围内,并在每次操作后丢弃。

var arr = [],
    tempObj = {};

http://jsfiddle.net/samternent/rw0z9e2j/2/

你必须把它放在推送之后:

arr.push(tempObj);
obj.players = arr;

实际上你需要这个:

var sports = [{
    "id": 1,
        "name": "baseball"
}, {
    "id": 2,
        "name": "Football"
}];
var playersData = [{
    "sport_id": 2,
        "id": "nv12",
        "name": "James"
}, {
    "sport_id": 2,
        "id": "nv11",
        "name": "Jean"
}];
var arr = [];
$.each(sports, function (i, obj) {
    $.each(playersData, function (i, player) {
        if (obj.id === player.sport_id) {
           var tempObj = {
                "sport_id": player.sport_id,
                    "id": player.id,
                    "name": player.name
            };
            arr.push(tempObj);
            obj.players = arr;
        }
    });
    
});
console.log(sports);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

希望你想加入体育组,但你正在加入球员阵列,请注意,所以请致电

obj.sports = arr;

希望它能解决你的问题。