You could potentially do it in this manner, but it depends on your requirements.
Basically you use one loop rather than two, if element of arr1 exists in arr2 then check, else uncheck.
document.getElementById("clickMe").onclick = displayList;
function displayList() {
var arr1 = ["apple", "banana", "grapes", "orange", "kiwi", "guava"];
var arr2 = ["apple", "orange", "kiwi"];
var arrData;
var output = "";
for (var i = 0; i < arr1.length; i++) {
if (arr2.contains(arr1[i])) {
arrData = arr1[i];
output += '<input type="checkbox" value=' + arrData + ' name="box2" checked >' + ' ' + arrData + ' ' + '<br><br>';
document.getElementById("demo2").innerHTML = output;
}
else{
arrData = arr1[i];
output += '<input type="checkbox" value=' + arrData + ' name="box2" >' + ' ' + arrData + ' ' + '<br><br>';
document.getElementById("demo2").innerHTML = output;
}
}
}
Array.prototype.contains = function(element){
return this.indexOf(element) > -1;
};
<button id="clickMe">click me</button>
<div id="demo"></div>
<div id="demo2"></div>
Here's an uglier version, you can use splice to remove it, and then you will remain with what doesn't exist.
document.getElementById("clickMe").onclick = displayList;
function displayList() {
var arr1 = ["apple", "banana", "grapes", "orange", "kiwi", "guava"];
var arr2 = ["apple", "orange", "kiwi"];
var arrData;
var output = "";
for (var i = 0; i < arr1.length; i++) {
for (var j = 0; j < arr2.length; j++) {
if (arr1[i] === arr2[j]) {
arrData = arr1[i];
output += '<input type="checkbox" value=' + arrData + ' name="box2" checked >' + ' ' + arrData + ' ' + '<br><br>';
document.getElementById("demo2").innerHTML = output;
arr1.splice(i,1);
}
}
}
for (var x = 0;x <=arr1.length-1;x++){
arrData = arr1[x];
output += '<input type="checkbox" value=' + arrData + ' name="box2" >' + ' ' + arrData + ' ' + '<br><br>';
document.getElementById("demo2").innerHTML = output;
}
}
<button id="clickMe">click me</button>
<div id="demo"></div>
<div id="demo2"></div>
In this version you can keep your nested loop, and it organizes checked and unchecked. In this manner, the checked checkboxes can be placed separately to unchecked. Once again, it depends on requirements.