阵列打印多次



我正在尝试打印数组中多次出现的每个元素,以及它们所在的索引。例如:高(数字(:2,索引:0但是,我只希望它在每个索引中打印一次。很抱歉解释不好,而且是挪威语!

<!Doctype html>
<HTML lang="no">
<head>
    <meta charset="utf-8">
    <title>#</title>
    <script>
        window.onload = oppstart;
        function oppstart() {
            var heltall = [2, 3, 4, 3, 5, 2, 1, 4, 2, 1, 4, 2, 3, 4, 5, 6];
            var utskrift = "-- n";
            for (j = 0; j < heltall.length; j++) {
                var talletViSkalTelle = heltall[j];
                for (i = 0; i < heltall.length; i++) {
                    if (heltall[i] == talletViSkalTelle) {
                        utskrift += "Tall: " + talletViSkalTelle + ", index: " + i + "n";
                    }
                }
            }
            print(utskrift);
        }
        function print(text) {
            var el = document.getElementById("utskrift");
            el.innerText = text;
            //el = element//
        }
    </script>
</head>
<body>
<p id="utskrift"></p>
</body>

创建一个数组,该数组存储您已经经历的数字,然后在再次迭代之前检查该数组是否已经存储了下一个数字。

请参阅下面的工作片段

<!Doctype html>
<HTML lang="no">
<head>
    <meta charset="utf-8">
    <title>#</title>
    <script>
        window.onload = oppstart;
        var pushed = [];
        function oppstart() {
            var heltall = [2, 3, 4, 3, 5, 2, 1, 4, 2, 1, 4, 2, 3, 4, 5, 6];
            var utskrift = "-- n";
            for (j = 0; j < heltall.length; j++) {
                var talletViSkalTelle = heltall[j];
                if(!check(talletViSkalTelle)){
                  pushed.push(talletViSkalTelle);
                  for (i = 0; i < heltall.length; i++) {
                      if (heltall[i] == talletViSkalTelle) {
                          utskrift += "Tall: " + talletViSkalTelle + ", index: " + i + "n";
                      }
                  }
                }
            }
            print(utskrift);
        }
        function print(text) {
            var el = document.getElementById("utskrift");
            el.innerText = text;
            //el = element//
        }
        
        function check(num){
          for(var i = 0; i<pushed.length; i++){
            if(num === pushed[i]){
              return true;
            }
          }
          return false;
        }
    </script>
</head>
<body>
<p id="utskrift"></p>
</body>

我建议你创建一个数组来存储你已经处理过的数字,比如说:

var tallerViHarTellet = []

在初始化您的 heltall 数组之后。

然后,检查

是否已检查该号码,如下所示:

if (tallerViHarTellet.includes(talletViSkalTelle))continue;
tallerViHarTellet.push(tallerViSkalTelle)

var talletViSkalTelle = heltall[j];

这样,您将跳过检查已经检查的数字。

您是否需要在出现时分别打印所有具有不同索引的数组重复元素? 或者您需要重复数组元素以及它们出现的所有索引?

<!Doctype html>
<HTML lang="no">
<head>
    <meta charset="utf-8">
    <title>#</title>
    <script>
        window.onload = oppstart;
        function getIndices (arr){
          var out = {};
          arr.map((tall, idx) => {
              if(out.hasOwnProperty(tall)) {
                  out[tall].push(idx)
              } else { 
                  out[tall] = [idx]
              }
          })
          return out;
        }
        function oppstart() {
            var heltall = [2, 3, 4, 3, 5, 2, 1, 4, 2, 1, 4, 2, 3, 4, 5, 6];
            var utskrift = "-- n";
            var res = getIndices(heltall);
            Object.keys(res).map(function(tall){
            if (res[tall].length > 1) {
                utskrift += "Tall: " + tall + ", indices: " + res[tall].join(', ') + "n";
            }
            })
            print(utskrift);
        }
        function print(text) {
            var el = document.getElementById("utskrift");
            el.innerText = text;
        }
    </script>
</head>
<body>
<p id="utskrift"></p>
</body>

输出

-- 
Tall: 1, indices: 6, 9
Tall: 2, indices: 0, 5, 8, 11
Tall: 3, indices: 1, 3, 12
Tall: 4, indices: 2, 7, 10, 13
Tall: 5, indices: 4, 14

最新更新