循环并根据id将数组放入数组中失败
loop and put array within array according to id failed
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;
希望它能解决你的问题。
相关文章:
- 在数组中插入对象失败
- $q.all当输入数组中的一项不是promise时,Typescript检查器失败
- 断言错误:断言失败:坐标数组的长度应与步幅匹配
- ember dev fixes错误:“;断言失败:findAll的响应必须是数组,而不是未定义的“”;
- 去掉js可观察数组和复选框,选中绑定失败
- 在 ie8 中使用茉莉花比较数组失败
- 克隆对象数组失败
- Ember 断言失败:来自 findQuery 的响应必须是数组,而不是未定义
- 循环遍历 ArrayController 失败,因为它不是数组,即使控制器具有正确的数据模型也是如此
- 从数组获取非重复索引在 0 时失败
- 将对象推入数组失败
- 在函数中破坏数组失败;let未被定义”;
- 执行请求数组失败,并多次调用Error: done().映射请求数组不会触发请求
- 通过 Ajax 发送数组失败
- 尝试将数学公式的值输出到数组失败
- 包含对象逻辑的Javascript数组失败.出了什么问题
- 访问数组失败,数组是 Javascript 中对象的属性
- 为什么在javascript中填充2D数组失败
- 构建 JavaScript 对象数组失败
- JSON.用object解析数组失败