大家好,我是数据结构的新手,我一直在用JavaScript练习一些数组操作。我想关注
var classes = [{id : 1, class:'first'},{id : 2, class:'second'},{id : 3, class:'third'},{id : 4, class:'fourth'}]
var students =[{classId : 1, count:30}, {classId : 3, count:46}, {classId : 2, count:52}]
我希望得到以下输出
classes = [
{id : 1, class:'first', count:30},
{id : 2, class:'second', count:52},
{id : 3, class:'third', count:46},
{id : 4, class:'fourth', count:0}
]
我已经尝试过以下代码
for (var i = 0; i < classes.length; i++) {
for (j = 0; j < students.length; j++) {
if (classes[i]["id"] == students[j]["classId"]) {
classes[i]["count"] = students[j]["count"]
} else {
classes[i]["count"] = 0
}
if (i == classes.length - 1) {
console.log(classes);
}
}
}
但是没有运气,除了for循环之外还有其他更好的方法吗?有人可以帮我吗?
预先感谢
答案 0 :(得分:0)
map()
方法创建一个新数组,其中填充了在调用数组中每个元素上调用提供的函数的结果。
find()
方法返回提供的数组中满足提供的测试功能的第一个元素的值。
代码段,可能的解决方案:
const classes = [{id : 1, class:'first'},{id : 2, class:'second'},{id : 3, class:'third'},{id : 4, class:'fourth'}]
const students =[{classId : 1, count:30}, {classId : 3, count:46}, {classId : 2, count:52}];
const result = classes.map(e => {
const found = students.find(s => s.classId === e.id);
return {
...e,
count: found ? found.count : 0
}
});
console.log(result);
我希望这会有所帮助!
答案 1 :(得分:0)
尝试使用此解决方案
for(let class in classes){
console.log(classes[class]);
}
您在这里所做的是遍历数组类的所有索引,并将该索引存储在类中。然后您console.log
索引。