JSFiddle - React, Tailwind, and code Playground

by cincodenada

HTML

<h2>Strict equality (for..in):</h2>
Current: <span id="in"></span><br/>
Other: <span id="out"></span>
<h2>Loose equality:</h2>
Current: <span id="in_loose"></span><br/>
Other: <span id="out_loose"></span>
<h2>Strict equality (Array.forEach):</h2>
Current: <span id="in_foreach"></span><br/>
Other: <span id="out_foreach"></span>

JavaScript

var testarr = ["one","two","three"];
var curpos = 2; // This represents some externally-controlled position in the array

var invar = [];
var outvar = [];
for(i in testarr) {
    if(i === curpos) {
        //If the current index is equal to curpos, put it in the "in" list
        invar.push(testarr[i]);
    } else {
        //Otherwise it's in the "out" list
        outvar.push(testarr[i]);
    }
}

document.getElementById('in').innerHTML = invar.join(',');
document.getElementById('out').innerHTML = outvar.join(',');

var invar = [];
var outvar = [];
for(i in testarr) {
    if(i == curpos) {
        invar.push(testarr[i]);
    } else {
        outvar.push(testarr[i]);
    }
}

document.getElementById('in_loose').innerHTML = invar.join(',');
document.getElementById('out_loose').innerHTML = outvar.join(',');

//Another solution: use Array.forEach(), which apparently coerces the
//array indexes to integers
var invar = [];
var outvar = [];
testarr.forEach(function(val, i) {
    if(i === curpos) {
        //If the current index is equal to curpos, put it in the "in" list
        invar.push(testarr[i]);
    } else {
        //Otherwise it's in the "out" list
        outvar.push(testarr[i]);
    }
});

document.getElementById('in_foreach').innerHTML = invar.join(',');
document.getElementById('out_foreach').innerHTML = outvar.join(',');