I previously posted this question as jquery/javascript: arrays – jquery/javascript: arrays.
But since I am a complete beginner I have formulated the question wrong and didn’t understand the answers either…. 🙁
After failing to implement the given solutions I did some more looking around I found out that I need to compare 6 arrays of possible choices and intersect them to finally display only the overlapping values.
So this is, hopely, a clearer formulation:
I have 6 questions/6 groups of radio buttons for answers. Each answer has multiple values (they can range from 1 to 38 items to be displayed in final ‘advice’). I am collecting the values of checked radios in arrays. I get 6 arrays.
How do I intersect 6 arrays in order to get one final array containing only intersecting values form all 6 choices?
How do I turn items of this final array into selectors?
Can someone please help me?
Thank you!
My script looks now like:
(function($){
$.fn.checkboxval = function(){
var outArr = [];
this.filter(':checked').each(function(){
outArr.push(this.getAttribute("value"));
});
return outArr;
};
})
(jQuery);
$(function(){
$('#link').click(function(){
var valArr1 = $('#vraag1 input:radio:checked').checkboxval();
var valArr2 = $('#vraag2 input:radio:checked').checkboxval();
var valArr3 = $('#vraag3 input:radio:checked').checkboxval();
var valArr4 = $('#vraag4 input:radio:checked').checkboxval();
var valArr5 = $('#vraag5 input:radio:checked').checkboxval();
var valArr6 = $('#vraag6 input:radio:checked').checkboxval();
// var newArray = $.merge(valArr1, valArr2, valArr3, valArr4, valArr5, valArr6); <- test to see if I can merge them
// $('#output').text(newArray.join(',')); <- test to see if I can join them
//$("#output").html($("#output").html().replace(/,/gi, ',#diet')); <- test to see if I can append text so it looks like the selectors of divs I need to display later
// return false;
});
});
my form/inputs looks like:
<input name="vraag1" type="radio" value="1a,4,5,12,13,17a,18,19,22,23,24,26,27,28,29,30,33,38,6" class="radio advice" id="vraag1-0" /><label for="vraag1-0">ja</label>
<br />
<input name="vraag1" type="radio" value="1b,1,2,3,7,8,11,9,14,15,16,17,20,21,25,31,34,35,36,37,10,32" class="radio advice" id="vraag1-1" /><label for="vraag1-1">nee</label>
<br />
<input name="vraag1" type="radio" value="1c,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,17a,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38" class="radio advice" id="vraag1-2" /><label for="vraag1-2">maakt mij niet uit</label>
Your question is still very confusing to me.
But it appears you are getting the value from the inputs and trying to combine them. But they are all strings not arrays.
Try just adding the strings together, then breaking them apart using
split()(demo)Update: Ok, from your demo HTML, I couldn’t get 6 duplicates so in the demo I set it to find 3+ matches. I had to write this script to find duplicates in an array I also made it to return an associative object with the number of duplicates. There may be a better method, but this is what I came up with (updated demo):