【问题标题】:Make a forEach in another ForEach在另一个 ForEach 中创建一个 forEach
【发布时间】:2018-08-14 15:42:49
【问题描述】:

我必须从一个 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 图片中看到,其他值重复多少次作为重复。 我只需要显示一次其他值

谢谢

【问题讨论】:

    标签: javascript arrays node.js foreach ejs


    【解决方案1】:

    好的!首先,我们将两个对象数组合并为一个。其次,遍历合并的数组并检查重复值(它的工作原理类似于哈希图)。第三,在每个对象中插入一个名为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>
    <% }) %>
    

    【讨论】:

    • 不起作用老兄,我不明白 html 的变化,你正在做 1 个 foreach,但我不明白 2 个 json 文件,谢谢
    • 你现在可以试试!我已经添加了一个简短的描述,如果你仍然不明白,请告诉我。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多