javascript - 在另一个 ForEach 中创建一个 forEach

标签 javascript arrays node.js foreach ejs

我必须从 json 文件(实际上是 2 个 json 文件)执行 ForEach,因此我执行 2 forEach,代码是

<head>
<style>
table {
    font-family: arial, sans-serif;
    border-collapse: collapse;
    width: 100%;
}

td, th {
    border: 1px solid #dddddd;
    text-align: left;
    padding: 8px;
}

tr:nth-child(even) {
    background-color: #dddddd;
}
</style>
</head>
<body>

<h2>HTML Table</h2>

<table>
  <tr>
    <th>Company</th>
    <th>Contact</th>
    <th>Country</th>
  </tr>


<% alist.forEach(function(alist_items){%>

  <% alist_b.forEach(function(alist_items_b){%>
  <%if(alist_items_b.AY==alist_items.CI){ %>
  <tr>
  <td bgcolor="#FF0000"><%= JSON.stringify(alist_items_b) %></td>
  </tr>
  <% }else{ %>
  <tr>
  <td><%= JSON.stringify(alist_items_b) %></td>
  <% } %>
  </tr>

<% }) %> 
<% }) %>
</table>

json 文件是:

[
  {
    "CI": "10"
  },
  {
    "CI": "11"
  },
  {
    "CI": "12"
  },
  {
    "CI": "13"
  },
  {
    "CI": "14"
  },
  {
    "CI": "15"
  },
  {
    "CI": "16"
  },
  {
    "CI": "17"
  },
  {
    "CI": "18"
  },
  {
    "CI": "19"
  },
  {
    "CI": "20"
  }
]

[\[
  {
    "AY": "10"
  },
  {
    "AY": "11"
  },
  {
    "AY": "12"
  },
  {
    "AY": "13"
  },
  {
    "AY": "14"
  }

我需要以红色显示重复值,通常还有其他值,但是您如何在 1 中看到图片中,其他值是重复多少次。 我只需要向其他人展示一次值(value)观

谢谢

最佳答案

好吧!首先,我们将两个对象数组合并为一个。其次,迭代合并的数组并检查重复值(它的工作方式类似于 HashMap )。第三,在每个对象中插入一个名为 colorRed 的新属性(它指示是否将重复行着色为红色)。

JS 变化:

var a = []; //first array of object
var b = []; //second array of object
Array.prototype.push.apply(a, b); //merging both the arrays

//finding the number of occurences of all the values
//variable would hold all the indexes of the array having same value
var c = new Object();
a.forEach(function (value, index) {
     var vArr = Object.keys(value);
     if (!c.hasOwnProperty(value[vArr[0]]))
        c[value[vArr[0]]] = [];
     c[value[vArr[0]]].push(index);
     c[value[vArr[0]]].forEach(function (cValue, cIndex) {
        if (c[value[vArr[0]]].length > 1)
           a[cValue].colorRed = true;
        else
           a[cValue].colorRed = false;
     });
});

现在,在 JS 中进行更改后。模板中迭代的数组只是包含是否将行涂成红色的对象数组。为了更好地理解,您可以简单地执行 console.log(a); 并检查最终的数组结构。

HTML 更改:

<% a.forEach(function(val, ind) { %>
<tr>
    <%if (val.colorRed) { %>
        <td bgcolor="#FF0000">
    <% } else { %>
        <td>
    <% } %>
    <%= JSON.stringify(val) %></td>
</tr>
<% }) %>

关于javascript - 在另一个 ForEach 中创建一个 forEach,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49136659/

相关文章:

javascript - JavaScript 中 boolean 值与 Int 值的比较

动画中的Javascript数组拼接

ruby-on-rails - 如何访问 ruby​​ 对象内数组内的哈希?

java - 确定列表中连续整数的最大和java

node.js - 在 NodeJS 中的另一个文件中引用全局 JS 函数

node.js - Mongoose 在自定义 _id 上查找不起作用

node.js - 使用 $push 时如何验证数组长度?

javascript - Geolocation Cordova 的位置未定义

javascript - 如何在div上创建两个滚动条作为顶部和底部?

javascript - OnClick 带有箭头功能,可重新渲染 React