我有一个嵌套的二维数组的索引数组,该数组的元素对由一个短语和一个数字组成。
在没有双向文本的情况下,该短语出现在索引数组的每个元素的编号之前。如果存在双向文本,则短语会出现在数字后面。
如果短语编号对混合使用-即,某些短语编号对与LTR文本一起出现,而某些短语编号对与RTL文本一起出现,那么结果顺序将混合在一起,从而形成一个杂乱的列表,不能用于输入wordcloud.js函数。
我尝试过反转短语编号对中元素的顺序,这些短语在将短语压入索引数组之前被写入RTL,但无济于事。结果索引数组变得混乱。
var listItem = [];
var list = [];
$.each(countedPhrases, function(phrase, count) {
console.log('phrase: ' + phrase);
console.log('count: ' + count);
listItem = [phrase, count];
console.log('listItem: ' + listItem);
list.push(listItem);
});
console.log('list: ' + list);'
示例console.log输出。
词组:النادر 数:321 listItem:النادر,321
词组:وتتلقاه 数:321 listItem:وتتلقاه,321
词组:终结 数:321 listItem:终结,321
词组:播客 数:45 listItem:播客,45
列表:النادر,321,وتتلقاه,321,终结,321,Podcast,45
答案 0 :(得分:0)
此问题已解决,方法是将阿拉伯文本包装在以下两个Unicode控件\ u2067阿拉伯文本\ u2069中,然后再将其读入数组元素。
无需详细介绍,纠正问题的代码如下:
if (name === 'searchKeyword') {
if (agex.test(value)) {
nakedArabic = value.match(agex);
searchItem.target = '\u2067' + nakedArabic.join('') + '\u2069';
} else {
searchItem.target = value;
}
}
其中agex.text(value)是正则表达式测试是否存在阿拉伯字符。
简而言之,该问题是由一种称为溢出的问题引起的。两个Unicode控制字符将阿拉伯文本分隔开,同时保留其自然的从右到左的方向顺序。
您可以了解有关问题和解决方案here的更多信息。
罗迪