summer
summer

Reputation: 213

Javascript check every char in a string and return array element on corresponding position

Got a string that is a series of 0 or 1 bit and an array of values, if in the string are characters that are set to 1, I need to return the corresponding value from the array. example: mystring = "0101"; myarray =["A","B","C","D"]; then result = "B,D" how can I get this result?

  for(var i=0;i<mystring.length;i++){
    if(mystring[i] != 0)
 {
 result = myarray[i];
 }
  }

Upvotes: 1

Views: 559

Answers (4)

Moesio
Moesio

Reputation: 3178

result = new Array(); for(var i=0;i

Upvotes: 0

theshadowmonkey
theshadowmonkey

Reputation: 679

I am not really sure if this is what you are looking for, but this returns the array of matches.

   var result = [];
   for(var i=0;i<mystring.length;i++){
       if(parseInt(mystring[i]) !== 0 ) {
          result.push(myarray[i]);
       }
   }
   return result;

Upvotes: 0

Rick Viscomi
Rick Viscomi

Reputation: 8862

Iterate through the characters in the binary string, if you encounter a 1, add the value at the corresponding index in the array to a temporary array. Join the temporary array by commas to get the output string.

Upvotes: 0

Explosion Pills
Explosion Pills

Reputation: 191789

Your code seems to work just fine, so you can just add another array and push the values on to that:

var result = [];
for (var i = 0 ...
    result.push(myarray[i]);

http://jsfiddle.net/ExplosionPIlls/syA2c/


A more clever way to do this would be to apply a filter to myarray that checks the corresponding mystring index.

myarray.filter(function (_, idx) {
    return +mystring[idx];
})

http://jsfiddle.net/ExplosionPIlls/syA2c/1/

Upvotes: 2

Related Questions