У вас есть буквальная строка ' 7 > 12 && 8 < 34 '
, а непустые строки являются правдивыми, поэтому вы получите true
.
Если вы хотите оценить его как выражение Javascript, сначала удалите все символы, которые могут привести к выполнению произвольного кода с помощью белого списка, скажем, чисел и операторов, которые вы хотите разрешить, удалите все другие символы, а затем eval
it:
var sub_response_type = {
"survey_question": ["Test lable"],
"responseTypeText": "Exit label",
"select_param_type": [">", "<"],
"questions_id": ["7", "8"],
"select_param_value": ["12", "34"],
"radio_type": ["&&"]
};
var order = ['questions_id', 'select_param_type', 'select_param_value', 'radio_type'];
var result = [];
var i = 0;
do result.push(...order.map(k => sub_response_type[k][i]));
while (sub_response_type.radio_type[i++]);
const origStr = result.join(' ');
const safeStr = origStr.replace(/[^\d&>< ]+/g, '');
console.log(safeStr);
console.log(eval(safeStr));
(Если вы абсолютно уверены, что входные данные получены из надежного источника, вам не нужно , чтобы выполнить замену, но это, вероятно, хорошая идея сделать в любом случае)