首页 > 解决方案 > 在嵌套对象数组和另一个数组之间循环

问题描述

我有两个数组,一个是普通数组,另一个是对象数组。我在这里想要的只是告诉我如何在他们两个之间建立一个循环以获得“ Jhon ”是好的和(期中+期末)的总和:第一个不是学校,第二个是班级>>我会使用 .split("|") 将它们放在一个数组中 In b: object array

我不想要整个代码,只想要循环和 if 条件

该函数会将 a 中的 1|1 与 school_no 和 class_no 进行比较以匹配

但我希望 if 条件根据评估为学生的姓名着色,例如红色表示坏,蓝色表示好。

这里的数组

a=["1|1|Jhon","1|2|Akram","1|3|Mali"]
    //first no for school no
    //second no for class no.
    b= [{
        "result": [
          {
            "midterm": 25,
            "evaluation": "good",
            "finalterm": 24
          }
        ],
        "school  _no": 1,
        "class_no": 1
      },
      {
        "result": [
          {
            "midterm": 55,
            "evaluation": "verygood",
            "finalterm": 60
          }
        ],
        "school_no": 1,
        "class_no": 2
      },
    {
        "result": [
          {
            "midterm": 11,
            "evaluation": "bad",
            "finalterm": 12
          }
        ],
        "school_no": 1,
        "class_no": 3
      }
    
    ];
    console.log(a);
    console.log(b);

这不是家庭作业,但它是我正在做的更大事情的一个小例子。

标签: javascriptarraysjson

解决方案


我的理解是您想要生成新数组,其中包含对象列表,其中包含字符串和基于评估的颜色。

var a=["1|1|Jhon","1|2|Akram","1|3|Mali"]
//first no for school no
//second no for class no.
var b= [{
"result": [
  {
    "midterm": 25,
    "evaluation": "good",
    "finalterm": 24
  }
],
"school_no": 1,
"class_no": 1
  },
  {
"result": [
  {
    "midterm": 55,
    "evaluation": "verygood",
    "finalterm": 60
  }
],
"school_no": 1,
"class_no": 2
  },
{
"result": [
  {
    "midterm": 11,
    "evaluation": "bad",
    "finalterm": 12
  }
],
"school_no": 1,
"class_no": 3
  }
];


var resultArrNew = a.reduce(function(ac, val) {
    var valArra = val.split("|");
var matched = b.filter(function(obj) {
    return obj.school_no == valArra[0] && obj.class_no == valArra[1];
});
var text = valArra[2] + " is " + matched[0].result[0].evaluation + " and sum is " + (matched[0].result[0].midterm+matched[0].result[0].finalterm);
var color = matched[0].result[0].evaluation === 'good' ? 'blue' : 'red';

ac.push({text: text, color: color});
return ac;
}, []);
console.log(resultArrNew);


推荐阅读