From 7310ef5314923a2ffad2ff328ad8d30c1c30f2d7 Mon Sep 17 00:00:00 2001 From: qcc Date: Wed, 26 Sep 2018 18:49:57 +0800 Subject: [PATCH] =?UTF-8?q?=E9=99=90=E5=88=B6makeFirstPY=E5=A4=9A=E9=9F=B3?= =?UTF-8?q?=E5=AD=97=E5=A4=84=E7=90=86=E7=9A=84=E9=95=BF=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dist/utils.js | 10 +++++++--- src/core/utils/chinesePY.js | 10 +++++++--- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/dist/utils.js b/dist/utils.js index b46b12487..dcca0de93 100644 --- a/dist/utils.js +++ b/dist/utils.js @@ -14463,17 +14463,21 @@ BI.ScalingCellSizeAndPositionManager.prototype = { }; var _mkPYRslt = function (arr) { - var arrRslt = [""], k; + var arrRslt = [""], k, multiLen = 0; for (var i = 0, len = arr.length; i < len; i++) { var str = arr[i]; var strlen = str.length; - if (strlen == 1) { + // 多音字过多的情况下,指数增长会造成浏览器卡死,超过20完全卡死,18勉强能用,考虑到不同性能最好是16或者14 + // 超过14个多音字之后,后面的都用第一个拼音 + if (strlen == 1 || multiLen > 14) { + var tmpStr = str.substring(0, 1); for (k = 0; k < arrRslt.length; k++) { - arrRslt[k] += str; + arrRslt[k] += tmpStr; } } else { var tmpArr = arrRslt.slice(0); arrRslt = []; + multiLen ++; for (k = 0; k < strlen; k++) { // 复制一个相同的arrRslt var tmp = tmpArr.slice(0); diff --git a/src/core/utils/chinesePY.js b/src/core/utils/chinesePY.js index 1127c0a20..652ad3b2f 100644 --- a/src/core/utils/chinesePY.js +++ b/src/core/utils/chinesePY.js @@ -388,17 +388,21 @@ }; var _mkPYRslt = function (arr) { - var arrRslt = [""], k; + var arrRslt = [""], k, multiLen = 0; for (var i = 0, len = arr.length; i < len; i++) { var str = arr[i]; var strlen = str.length; - if (strlen == 1) { + // 多音字过多的情况下,指数增长会造成浏览器卡死,超过20完全卡死,18勉强能用,考虑到不同性能最好是16或者14 + // 超过14个多音字之后,后面的都用第一个拼音 + if (strlen == 1 || multiLen > 14) { + var tmpStr = str.substring(0, 1); for (k = 0; k < arrRslt.length; k++) { - arrRslt[k] += str; + arrRslt[k] += tmpStr; } } else { var tmpArr = arrRslt.slice(0); arrRslt = []; + multiLen ++; for (k = 0; k < strlen; k++) { // 复制一个相同的arrRslt var tmp = tmpArr.slice(0);