#javascript #arrays #match
#javascript #массивы #сопоставление
Вопрос:
У меня проблема с двумя типами сравнения значений массивов, вот
tagNames = [];
tagNames.push('61');
cmt_wrds = '61'.replace(/[`~!@#$%^amp;*()_| -=?;:'",،؛«».<>{}[]\/]/gi, ' ').match(/S /g);
if ( tagNames[0] == cmt_wrds[0] ) { // issue is here
console.log('yes'); // --> nothing
};
Ответ №1:
Если вы зарегистрируете свои переменные, вы увидите, что они немного отличаются. Оно помещает
'u200f'
символ, который является меткой справа налево.
var tagNames = [];
tagNames.push('61');
cmt_wrds = '61'.replace(/[`~!@#$%^amp;*()_| -=?;u200f:'",،؛«».<>{}[]\/]/gi, ' ').match(/S /g);
console.log(tagNames);
console.log(cmt_wrds);
console.log(tagNames[0] === cmt_wrds[0]); // returns false, because they are different
Комментарии:
1. Как следует предотвратить использование этого символа? есть решение?
2. @RaminRabii добавьте
u200f
в регулярное выражение. Смотрите пример3. Большое спасибо. это было то, что
Ответ №2:
Используйте Batter с некоторой переменной для предоставления входных данных, это решит вашу проблему.
(function () {
tagNames = [];
tagNames.push('61');
var datas ="61";//variable declaration
cmt_wrds = datas.replace(/[`~!@#$%^amp;*()_| -=?;:'",،؛«».<>{}[]\/]/gi, ' ').match(/S /g);
if ( tagNames[0] == cmt_wrds[0]) { // issue is here
console.log('yes'); // --> nothing
};
})()
Ответ №3:
Если вы показываете их длину, вот разница.
tagNames[0].length
равно 2
cmt_wrds[0].length
равно 4
tagNames = [];
tagNames.push('61');
cmt_wrds = '61'.replace(/[`~!@#$%^amp;*()_| -=?;:'",،؛«».<>{}[]\/]/gi, ' ').match(/S /g);
if ( tagNames[0] == cmt_wrds[0] ) { // issue is here
console.log('yes'); // --> nothing
};
console.log(tagNames[0].length);
console.log(cmt_wrds[0].length);