You need to search after the first index for the second element and same for all repeating elements(for third after index). You can specify fromIndex argument in Array#indexOf method to start the search at a specific index.
// use a reference object to specify from index for duplicate
var ref = {};
var index = [];
for (i = 0; i < arr2.length; i++) {
// specify from index from object, if not found set as 0
var i1 = arr1.indexOf(arr2[i], ref[arr2[i]] || 0);
// push the index
index.push(i1);
// specify from index for current element
ref[arr2[i]] = i1 + 1;
}
var ref = {};
var arr1 = [0, 1, 2, 0, 2],
arr2 = [0, 0, 1, 2, 2];
var ref = {};
var index = [];
for (i = 0; i < arr2.length; i++) {
var i1 = arr1.indexOf(arr2[i], ref[arr2[i]] || 0);
index.push(i1);
ref[arr2[i]] = i1 + 1;
}
console.log(index);
Using Array#map method to generate the index array.
var index = arr2.map(function(v, i) {
// get the index of the element, where specify from index to
// search after a certain index for repeating element
var i1 = arr1.indexOf(v, this[v] || 0);
// set reference of index
this[v] = i1 + 1;
// return index
return i1;
// set this argument as an object for from index reference
}, {});
var arr1 = [0, 1, 2, 0, 2],
arr2 = [0, 0, 1, 2, 2];
var index = arr2.map(function(v, i) {
var i1 = arr1.indexOf(v, this[v] || 0);
this[v] = i1 + 1;
return i1;
}, {});
console.log(index);
newiter? My guess is that it is an array and from the code shown, it is one dimensional array. Remove[0]from it.