[英]Compare and merge data from two array in JavaScript
大家好,我是数据结构的新手,我一直在练习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}]
我期待跟随 output
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循环还有什么更好的方法吗? 谁能帮我这个?
提前致谢
map()
方法创建一个新数组,其中填充了在调用数组中的每个元素上调用提供的 function 的结果。
find()
方法返回提供的数组中满足提供的测试 function 的第一个元素的值。
代码片段,可能的解决方案:
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);
我希望这有帮助!
尝试使用此解决方案
for(let class in classes){
console.log(classes[class]);
}
您在这里所做的是遍历数组类的索引,并将索引存储在 class 中。 然后你console.log
索引。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.