Javascript 循环数组值并生成不同的列名输出

Javascript 循环数组值并生成不同的列名输出,javascript,arrays,loops,Javascript,Arrays,Loops,我需要你的帮助 我想知道是否可以修改for循环,该循环在数组值上循环并基于数组值输出列名,但也只能(1)出现单个项,从而生成不同的列名。下面是迄今为止javascript代码输出的图片: 这是所需的输出。正如你所见,它在视觉上更吸引眼球,而不需要重复。因为我稍后会在列名下清点数字 下面是有问题的Javascript代码: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type"

我需要你的帮助

我想知道是否可以修改for循环,该循环在数组值上循环并基于数组值输出列名,但也只能(1)出现单个项,从而生成不同的列名。下面是迄今为止javascript代码输出的图片:

这是所需的输出。正如你所见,它在视觉上更吸引眼球,而不需要重复。因为我稍后会在列名下清点数字

下面是有问题的Javascript代码:

<!DOCTYPE html>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<style type="text/css">

</style>

<script type="text/javascript">

function search_array(arr, str){
  var searchExp = new RegExp(str,"gi");
  return (searchExp.test(arr))?true:false;
}

function build_sheet() {

    var Excel = new ActiveXObject("Excel.Application")

    var Book = Excel.Workbooks.Add()

    var Sheet = Book.ActiveSheet

    var temp = "BNI to President","BNI to Director","BNI to Manager","BNA to President","BNA to Director","BNA to Manager"

    var c = 2 /* Start position @ Column 2*/

    for(var i = 0; i < temp.length; i++) {

        if (search_array(temp[i], "BNI to") == true) {
            Sheet.Cells(2,c).Value = "Briefing Notes (Info)"
        }
        if (search_array(temp[i], "BNA to") == true) {
            Sheet.Cells(2,c).Value = "Briefing Notes (Approval)"
        }
        else {
            Sheet.Cells(2,c).Value = temp[i]
        }
        ++c
    }

    Excel.visible = true

    Excel.quit()

    Excel = null

}
</script>

</head>

<body>

</body>

</html>

函数搜索数组(arr、str){
var searchExp=新的RegExp(str,“gi”);
返回(searchExp.test(arr))?真:假;
}
函数构建表(){
var Excel=新的ActiveXObject(“Excel.Application”)
var Book=Excel.Workbooks.Add()
var Sheet=Book.ActiveSheet
var temp=“BNI致总裁”、“BNI致董事”、“BNI致经理”、“BNA致总裁”、“BNA致董事”、“BNA致经理”
变量c=2/*第2列的起始位置*/
对于(变量i=0;i
实现这一点的方法有很多,但一个简单的方法是简单地跟踪编写的内容,如果已经编写了,不要再编写:

function build_sheet() {

    var Excel = new ActiveXObject("Excel.Application");
    var Book = Excel.Workbooks.Add();
    var Sheet = Book.ActiveSheet;
    var temp = "BNI to President","BNI to Director","BNI to Manager","BNA to President","BNA to Director","BNA to Manager";
    var c = 2; /* Start position @ Column 2*/

    var written = ['info'=>false, 'approval'=>false];

    for(var i = 0; i < temp.length; i++) {

        if (!written['info'] && search_array(temp[i], "BNI to") == true) {
            Sheet.Cells(2,c).Value = "Briefing Notes (Info)";
            written['info'] = true;
            ++c;
        }
        if (!written['approval'] && search_array(temp[i], "BNA to") == true) {
            Sheet.Cells(2,c).Value = "Briefing Notes (Approval)";
            written['approval'] = true;
            ++c;
        }
        else {
            Sheet.Cells(2,c).Value = temp[i];
            ++c;
        }
    }

    Excel.visible = true;
    Excel.quit();
    Excel = null;
}
功能构建工作表(){
var Excel=新的ActiveXObject(“Excel.Application”);
var Book=Excel.Workbooks.Add();
var Sheet=Book.ActiveSheet;
var temp=“BNI致总裁”、“BNI致董事”、“BNI致经理”、“BNA致总裁”、“BNA致董事”、“BNA致经理”;
变量c=2;/*第2列的起始位置*/
var writed=['info'=>false,'approval'=>false];
对于(变量i=0;i
我不确定这是否100%有效,因为我没有excel,也不知道您如何在excel电子表格上使用JS,但我将首先解释我的思路

如果在for循环外部定义的单独数组中跟踪输入到电子表格中的任何值,则可以检查该数组以查看是否已插入
temp[i]
。如果没有,那么运行剩下的代码,这看起来很好

    <!DOCTYPE html>
    <html>
      <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <style type="text/css">
        </style>
        <script type="text/javascript">
          function search_array(arr, str){
            var searchExp = new RegExp(str,"gi");
            return (searchExp.test(arr))?true:false;
          }

          function build_sheet() {
            var Excel = new ActiveXObject("Excel.Application")
            var Book = Excel.Workbooks.Add()
            var Sheet = Book.ActiveSheet
            var temp = ["BNI to President","BNI to Director","BNI to Manager","BNA to President","BNA to Director","BNA to Manager"];
            var c = 2 /* Start position @ Column 2*/
            var arr = []

            for( var i = 0; i < temp.length; i++) {
              if (arr.indexOf(temp[i]) == -1) {
                arr.push(temp[i]);
                if (search_array(temp[i], "BNI to") == true) {
                  Sheet.Cells(2,c).Value = "Briefing Notes (Info)"
                }
                if (search_array(temp[i], "BNA to") == true) {
                  Sheet.Cells(2,c).Value = "Briefing Notes (Approval)"
                }
                else {
                  Sheet.Cells(2,c).Value = temp[i]
                }
              }
              ++c
            }
          Excel.visible = true
          Excel.quit()
          Excel = null
          }
        </script>
      </head>
      <body>
      </body>
    </html>

函数搜索数组(arr、str){
var searchExp=新的RegExp(str,“gi”);
返回(searchExp.test(arr))?真:假;
}
函数构建表(){
var Excel=新的ActiveXObject(“Excel.Application”)
var Book=Excel.Workbooks.Add()
var Sheet=Book.ActiveSheet
var temp=[“BNI对总裁”、“BNI对董事”、“BNI对经理”、“BNA对总裁”、“BNA对董事”、“BNA对经理”];
变量c=2/*第2列的起始位置*/
var arr=[]
对于(变量i=0;i
++c
我相信是有条件的