Remove null value from a number array | XM Community
Skip to main content
Hello,



I created a number array as follows:



Qualtrics.SurveyEngine.addOnReady(function()

{

var i1=parseInt("${q://QID1/ChoiceTextEntryValue}");

var i2=parseInt("${q://QID2/ChoiceTextEntryValue}");

var i3=parseInt("${q://QID3/ChoiceTextEntryValue}");



var myArray = [i1, i2, i3];



And I want to randomly select one of these items in the array, so I write:



var randomItem = myArray[Math.floor(Math.random() * myArray.length)];



But the problem is, if one of the three items is null (a respondent skill the question), this does not work.



Could you please tell me how I can remove null item in the array?



Thank you very much.
Hello @jhwang ,



Use the below code:



var i1=parseInt("${q://QID1/ChoiceTextEntryValue}") || -1;

var i2=parseInt("${q://QID2/ChoiceTextEntryValue}") || -1;

var i3=parseInt("${q://QID3/ChoiceTextEntryValue}") || -1;

var myArray = [i1, i2, i3];

myArray= jQuery.grep(myArray, function(value) {

return value != -1;

});

var randomItem = myArray[Math.floor(Math.random() * myArray.length)];
Hello @Shashi,



Thank you very much for your code. I think it works for random selection. But I have one additional issue. After the random selection, I want to match another value based on the selected item. So, my code is like:



var i1=parseInt("${q://QID1/ChoiceTextEntryValue}") || -1;

var i2=parseInt("${q://QID2/ChoiceTextEntryValue}") || -1;

var i3=parseInt("${q://QID3/ChoiceTextEntryValue}") || -1;

var myArray = [i1, i2, i3];

myArray= jQuery.grep(myArray, function(value) {

return value != -1;

});

var randomItem = myArray[Math.floor(Math.random() * myArray.length)];



Qualtrics.SurveyEngine.setEmbeddedData("randomItem", randomItem);



var i4="${q://QID4/ChoiceGroup/SelectedChoices}";

var i5="${q://QID5/ChoiceGroup/SelectedChoices}";

var i6="${q://QID6/ChoiceGroup/SelectedChoices}";



var purpose;



if(randomItem = i1){

purpose = i4;

}

else if(randomItem = i2){

purpose = i5;

}

else{

purpose = i6;

}



Qualtrics.SurveyEngine.setEmbeddedData("purpose", purpose);





Finally, in the survey, I want to say like,

"You selected ${e://Field/randomItem} and your purpose was ${e://Field/purpose}."





But with your code, I can see that random selection works, but the latter matching part does not work.



Could you please give me any suggestions?



Thank you very much.
> @jhwang said:

> Hello @Shashi,

> But with your code, I can see that random selection works, but the latter matching part does not work.

> Could you please give me any suggestions?

> Thank you very much.



The if statement should be



` if(randomItem == i1)`
Thank you, @Shashi.



I tried to change the if statement in the same way you suggested. But finally, I got the result like this:



`if(randomItem == "${q://QID1/ChoiceTextEntryValue}")`

Leave a Reply