【问题标题】:searching for a string in multiple arrays with forEach使用 forEach 在多个数组中搜索字符串
【发布时间】:2015-01-05 16:27:12
【问题描述】:

我正在尝试编写一个 forEach 函数,该函数在数组中搜索字符串(“null”)和 console.log(“I found a zero!”)。我在 results.data 中有 15 个需要搜索的数组。当我需要访问数组中的特定元素时,我会使用(例如) results.data["0"][0] 来定位它。出于某种原因,我的代码永远找不到我正在寻找的字符串(我可以在控制台中看到它,所以我知道它在那里)。这是我的代码

results.data["8"].forEach( function(entry) {
                            if (this === "null") {
                                console.log("I found a zero!");
                            }
                            else {
                                console.log("Didn't find a zero...");
                            }
                    });

一旦我得到这个工作,我可以在它之前编写一个 for 循环,以便它循环遍历所有数组 0-14,然后只使用 results.data[i].forEach?

在下面添加整个页面的jfiddle,原始文件是用本地文件制作的,尝试将它们上传到服务器并链接它们,希望它有效:

body {
    font-family:verdana;
}
.graphbox {
    width:90%;
    height:700px;
    
    border:1px solid black;
    padding:5px;
    
    margin:auto;
}
.dropdownmenubox {
    width:500px;
    height:23px;
    
    margin:auto;
    
    padding:5px;
}

#CSV {
    width:100%;
}
<!DOCTYPE html>
<html>
    <head>
        <title>grafi revije</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
        <script src="https://rawgit.com/mholt/PapaParse/master/papaparse.min.js"></script>
        <script src="http://code.highcharts.com/highcharts.js"></script>
                
        <link type="text/css" rel="stylesheet" href="index.css"/>
        
    </head>
    <body>
        <div class="graphbox"></div>   
        <div class="dropdownmenubox">
            <select id="CSV">
                <option value="http://topdeckandwreck.com/CSV/Sheet1.csv">1</option>
                <option value="http://topdeckandwreck.com/CSV/Sheet2.csv">2</option>
                <option value="http://topdeckandwreck.com/CSV/Sheet3.csv">3</option>
                <option value="http://topdeckandwreck.com/CSV/Sheet4.csv">4</option>
                <option value="http://topdeckandwreck.com/CSV/Sheet5.csv">5</option>
                <option value="http://topdeckandwreck.com/CSV/Sheet6.csv">6</option>
                <option value="http://topdeckandwreck.com/CSV/Sheet7.csv">7</option>
                <option value="http://topdeckandwreck.com/CSV/Sheet8.csv">8</option>
                <option value="http://topdeckandwreck.com/CSV/Sheet9.csv">9</option>
                <option value="http://topdeckandwreck.com/CSV/Sheet10.csv" selected="selected">10</option>
                <option value="http://topdeckandwreck.com/CSV/Sheet11.csv">11</option>
                <option value="http://topdeckandwreck.com/CSV/Sheet12.csv">12</option>
                <option value="http://topdeckandwreck.com/CSV/Sheet13.csv">13</option>
            </select>
        </div>        
        <script>
            $( "select" ).change(function () {
                $( "select option:selected" ).each(function() {
                var variable = $(this).val();

                    Papa.parse(variable, {
                    download: true,
                    dynamicTyping: true,
                    delimiter: ";",
                        complete: function(results) {
                            results.data.forEach(function(arr){
                            arr.forEach(function(itm){
                            console.log(typeof itm === "null" ? "I found a zero" : "Didn't find a zero"); 
                            });
                            });
                            console.log(results);
                        $(function () { 
                            $('.graphbox').highcharts({
                            chart: {
                            type: 'line'
                            },
                            title: {
                            text: [results.data["0"][0]]
                            },
                            xAxis: {
                            categories: [results.data["0"][2], results.data["0"][3], results.data["0"][4], results.data["0"][5], results.data["0"][6], results.data["0"][7], results.data["0"][8], results.data["0"][9], results.data["0"][10], results.data["0"][11], results.data["0"][12], results.data["0"][13], results.data["0"][14], results.data["0"][15], results.data["0"][16], results.data["0"][17], results.data["0"][18], results.data["0"][19], results.data["0"][20]]
                            },
                            yAxis: {
                            title: {
                            text: ''
                            }                           
                            },
                            legend: {
                            layout: 'vertical'
                            },
                            credits: {
                            enabled: false    
                            },
                            tooltip: {
                            formatter: function() {
                            var s = [];

                            $.each(this.points, function(i, point) {
                             s.push('<span class="tooltip">'+ point.series.name +' : '+
                            point.y + '<br><span>');
                            });

                            return s.join('');
                            },
                            shared: true    
                            },
                            plotOptions: {
                            series: {
                            connectNulls:true
                            }
                            }
                            ,
                            series :
                            [{
                            name: [results.data["1"][0]],
                            data: [results.data["1"][2], results.data["1"][3], results.data["1"][4], results.data["1"][5], results.data["1"][6], results.data["1"][7], results.data["1"][8], results.data["1"][9], results.data["1"][10], results.data["1"][11], results.data["1"][12], results.data["1"][13], results.data["1"][14], results.data["1"][15], results.data["1"][16], results.data["1"][17], results.data["1"][18], results.data["1"][19], results.data["1"][20]]
                            }, {
                            name: [results.data["2"][0]],
                            data: [results.data["2"][2], results.data["2"][3], results.data["2"][4], results.data["2"][5], results.data["2"][6], results.data["2"][7], results.data["2"][8], results.data["2"][9], results.data["2"][10], results.data["2"][11], results.data["2"][12], results.data["2"][13], results.data["2"][14], results.data["2"][15], results.data["2"][16], results.data["2"][17], results.data["2"][18], results.data["2"][19], results.data["2"][20]],
                            visible:false
                            }, {
                            name: [results.data["3"][0]],
                            data: [results.data["3"][2], results.data["3"][3], results.data["3"][4], results.data["3"][5], results.data["3"][6], results.data["3"][7], results.data["3"][8], results.data["3"][9], results.data["3"][10], results.data["3"][11], results.data["3"][12], results.data["3"][13], results.data["3"][14], results.data["3"][15], results.data["3"][16], results.data["3"][17], results.data["3"][18], results.data["3"][19], results.data["3"][20]]
                            ,visible:false
                            }, {
                            name: [results.data["4"][0]],
                            data: [results.data["4"][2], results.data["4"][3], results.data["4"][4], results.data["4"][5], results.data["4"][6], results.data["4"][7], results.data["4"][8], results.data["4"][9], results.data["4"][10], results.data["4"][11], results.data["4"][12], results.data["4"][13], results.data["4"][14], results.data["4"][15], results.data["4"][16], results.data["4"][17], results.data["4"][18], results.data["4"][19], results.data["4"][20]]
                            }, {
                            name: [results.data["5"][0]],
                            data: [results.data["5"][2], results.data["5"][3], results.data["5"][4], results.data["5"][5], results.data["5"][6], results.data["5"][7], results.data["5"][8], results.data["5"][9], results.data["5"][10], results.data["5"][11], results.data["5"][12], results.data["5"][13], results.data["5"][14], results.data["5"][15], results.data["5"][16], results.data["5"][17], results.data["5"][18], results.data["5"][19], results.data["5"][20]]
                            }, {
                            name: [results.data["6"][0]],
                            data: [results.data["6"][2], results.data["6"][3], results.data["6"][4], results.data["6"][5], results.data["6"][6], results.data["6"][7], results.data["6"][8], results.data["6"][9], results.data["6"][10], results.data["6"][11], results.data["6"][12], results.data["6"][13], results.data["6"][14], results.data["6"][15], results.data["6"][16], results.data["6"][17], results.data["6"][18], results.data["6"][19], results.data["6"][20]]
                            }, {
                            name: [results.data["7"][0]],
                            data: [results.data["7"][2], results.data["7"][3], results.data["7"][4], results.data["7"][5], results.data["7"][6], results.data["7"][7], results.data["7"][8], results.data["7"][9], results.data["7"][10], results.data["7"][11], results.data["7"][12], results.data["7"][13], results.data["7"][14], results.data["7"][15], results.data["7"][16], results.data["7"][17], results.data["7"][18], results.data["7"][19], results.data["7"][20]]
                            }, {
                            name: [results.data["8"][0]],
                            data: [results.data["8"][2], results.data["8"][3], results.data["8"][4], results.data["8"][5], results.data["8"][6], results.data["8"][7], results.data["8"][8], results.data["8"][9], results.data["8"][10], results.data["8"][11], results.data["8"][12], results.data["8"][13], results.data["8"][14], results.data["8"][15], results.data["8"][16], results.data["8"][17], results.data["8"][18], results.data["8"][19], results.data["8"][20]]
                            ,visible:false
                            }, {
                            name: [results.data["9"][0]],
                            data: [results.data["9"][2], results.data["9"][3], results.data["9"][4], results.data["9"][5], results.data["9"][6], results.data["9"][7], results.data["9"][8], results.data["9"][9], results.data["9"][10], results.data["9"][11], results.data["9"][12], results.data["9"][13], results.data["9"][14], results.data["9"][15], results.data["9"][16], results.data["9"][17], results.data["9"][18], results.data["9"][19], results.data["9"][20]]
                            ,visible:false
                            }, {
                            name: [results.data["10"][0]],
                            data: [results.data["10"][2], results.data["10"][3], results.data["10"][4], results.data["10"][5], results.data["10"][6], results.data["10"][7], results.data["10"][8], results.data["10"][9], results.data["10"][10], results.data["10"][11], results.data["10"][12], results.data["10"][13], results.data["10"][14], results.data["10"][15], results.data["10"][16], results.data["10"][17], results.data["10"][18], results.data["10"][19], results.data["10"][20]]
                            ,visible:false
                            }, {
                            name: [results.data["11"][0]],
                            data: [results.data["11"][2], results.data["11"][3], results.data["11"][4], results.data["11"][5], results.data["11"][6], results.data["11"][7], results.data["11"][8], results.data["11"][9], results.data["11"][10], results.data["11"][11], results.data["11"][12], results.data["11"][13], results.data["11"][14], results.data["11"][15], results.data["11"][16], results.data["11"][17], results.data["11"][18], results.data["11"][19], results.data["11"][20]]
                            ,visible:false
                            }, {
                            name: [results.data["12"][0]],
                            data: [results.data["12"][2], results.data["12"][3], results.data["12"][4], results.data["12"][5], results.data["12"][6], results.data["12"][7], results.data["12"][8], results.data["12"][9], results.data["12"][10], results.data["12"][11], results.data["12"][12], results.data["12"][13], results.data["12"][14], results.data["12"][15], results.data["12"][16], results.data["12"][17], results.data["12"][18], results.data["12"][19], results.data["12"][20]]
                            }, {
                            name: [results.data["13"][0]],
                            data: [results.data["13"][2], results.data["13"][3], results.data["13"][4], results.data["13"][5], results.data["13"][6], results.data["13"][7], results.data["13"][8], results.data["13"][9], results.data["13"][10], results.data["13"][11], results.data["13"][12], results.data["13"][13], results.data["13"][14], results.data["13"][15], results.data["13"][16], results.data["13"][17], results.data["13"][18], results.data["13"][19], results.data["13"][20]]
                            ,visible:false
                            }, {
                            name: [results.data["14"][0]],
                            data: [results.data["14"][2], results.data["14"][3], results.data["14"][4], results.data["14"][5], results.data["14"][6], results.data["14"][7], results.data["14"][8], results.data["14"][9], results.data["14"][10], results.data["14"][11], results.data["14"][12], results.data["14"][13], results.data["14"][14], results.data["14"][15], results.data["14"][16], results.data["14"][17], results.data["14"][18], results.data["14"][19], results.data["14"][20]]
                            ,visible:false
                            }]
                            
                            });
                            
                        });
                        }
                    });
                });
            })
            .change();               
        </script>
        
    </body>
    
</html>

【问题讨论】:

  • 考虑null的意思是never zero !!!
  • 这是主要问题,我正在尝试获取一个表示“null”的字符串并将其转换为一个数字 null,然后将其放入制作图形的 API 中,第一步是找到它并记录它,这样我就知道这个函数确实有效,然后我会尝试写一些东西来代替它
  • 猜猜正确的句子是“我什么也没找到!” :)
  • 如果可能,可以发布一个包含"null"字符串的示例数组吗?
  • 数组是由解析器从 CVS 文件创建的。这是显示字符串的控制台窗口的屏幕截图。 link 如果需要,我也可以上传整个内容,我认为只有这部分代码是相关的。

标签: javascript jquery arrays foreach highcharts


【解决方案1】:

我想你有一个数组数组。在这种情况下,您可以执行以下操作。

results.data.forEach(function(arr){
   arr.forEach(function(itm){
      console.log(itm == "null" ? "I found a zero" : "Didn't find a zero"); 
   });
});

【讨论】:

  • 嗯,仍然找不到字符串,我不知道为什么。另外我有 15 个数组,每个数组有 21 个元素,但我只得到 199 个结果?这是一个更好解释的截图,用红色圈出了相关的控制台输出link
  • 也将 == 更改为 ===
【解决方案2】:

编辑、更新

试试

// `arr`: array of arrays ,
// iterate each array , test for string `"null"` ,
// log results
var arr = [[1,2,3,"null"], ["null", 2,3,4], [1,"null", 3,4], [1,2,3,4]];
var filtered = function(arr) {
  $.each(arr, function(key, value) {
    // filter string `"null"` 
    var res = $.inArray("null", value);
    // if `"null"` found , log index of `"null"` within `arr`
    console.log(res !== -1 
                ? "found 'null' at index " + res + " within array " + key 
                : "'null' not found within array " + key)
  })
};

filtered(arr);

var arr = [[1,2,3,"null"], ["null", 2,3,4], [1,"null", 3,4], [1,2,3,4]];
var filtered = function(arr) {
  $.each(arr, function(key, value) {

    var res = $.inArray("null", value);

    console.log(res !== -1 
                ? "found 'null' at index " + res + " within array " + key 
                : "'null' not found within array " + key)
  })
};

filtered(arr);
&lt;script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"&gt;&lt;/script&gt;

【讨论】:

  • 将整个内容添加到 jfiddle 中,编辑了原始帖子,以便您查看发生了什么
  • 很难在我的代码中实现这一点,您能否将其注释掉以便我知道发生了什么,或者尝试自己编写它?感谢您的帮助
猜你喜欢
  • 2014-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多