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'.
Originally posted by sciguyryan The code seemed to work fune for me. I just ran a test and it returned a value with no error.
arrgh. that figures. As I haven't changed anything (such as when and where the function is called) except the function that means I must have some weird conflict going on with the new code.....
Originally posted by suegriff arrgh. that figures. As I haven't changed anything (such as when and where the function is called) except the function that means I must have some weird conflict going on with the new code.....
Bookmarks