i'm trying to check if the array1 use all values of my array2, if false return error message, but my array1.length is not equal to array2.length , i'm searching for hours to know why. Can someone help me? and if the problem does not come from there, anyone can tell me my mistake ?
function controlUserInput(inputText, appLang) {
const regex = /\$[^$]*\$/gm;
const str = $('#formulaire-preview-textarea').val();
let m;
var array = populateVariable(appLang);
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match}`);
var isEqual = match.length==array.length;
// for (i=0; i<=array.length-1;i++){
if(displayCpt == 4 && isEqual && Array.from(match).every(function(paramInMatch){
return $.inArray(paramInMatch, array) != -1;
})){
osapi.jive.core.container.sendNotification({
"message": "Toutes les valeurs rentrées sont correctes",
"severity": "success"
});
}else{
osapi.jive.core.container.sendNotification({
"message": "Vous n'avez pas utilisé toutes les valeurs",
"severity": "error"
});
}
// }
})
};
}
Edit:
When you are trying to iterate over all the elements of
m
, a single String is stored inmatch
so when you are trying to compare witharray
it fails.Instead of iterating over all the elements of
m
, the solution would be:Hope it helps!
Original Answer
If you want to check if every element of an array is used in another array you may have two approaches:
Arr2 is a SubSet of Arr1
Arr2 contains all elements of Arr1