我正在尝试打印数组中多次出现的每个元素,以及它们所在的索引。例如:高(数字(: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