In order to match up and resort items between two arrays and come up with a new array,I wrote the following code. y is a subset of x: x being the array that has the sorting order I want to emulate and y being the array that has the items that I want in the new array:
function createArray (x,y) {
var newArray = new Array();
var thisStr = y.join();
var thisReg;
var chckitem;
for(i=0;i<x.length;i++){
chckitem = x[i];
thisReg = new RegExp(chckitem);
if (thisReg.test(thisStr)) {
newArray.push(chckitem);
}
}
return newArray;
This works great as long as there are no items in x that may be a substring of items in y (oops!)…
So, in order to fix this problem (thanks to KOR for pointing out the solution) I used code as such:
function createArray (x,y) {
var newArray = new Array();
var chckitem;
for(i=0;i<x.length;i++){
chckitem=x[i];
for(f=0;f<y.length;f++) {
if(y[f]==chckitem){
newArray.push(chckitem);
}
}
}
return newArray;
}
Now, however, whenever I call this function, I get ‘newArray.push is not a function’.
WHat’s up?