繁体   English   中英

比较和合并 JavaScript 中两个数组的数据

[英]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().find()组合:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM