Get Short Pinyin

获取中文简拼

HTML

<script src="https://cdn.jsdelivr.net/lodash/4.5.0/lodash.min.js"></script>
<pre></pre>

JavaScript

var names = ["王思聪", "张柏芝", "郭德纲", "林志颖", "潘长江", "马云", "冯小刚"];

function getShortPinyin(word) {
  var idx = -1;
  var MAP = 'ABCDEFGHJKLMNOPQRSTWXYZ';
  var boundaryChar = '驁簿錯鵽樲鰒餜靃攟鬠纙鞪黁漚曝裠鶸蜶籜鶩鑂韻糳';

  if (!String.prototype.localeCompare) {
    throw Error('String.prototype.localeCompare not supported.');
  }

  return _(word.split('')).map(function(c) {
    if (/[^\u4e00-\u9fa5]/.test(c)) {
      return c;
    }
    for (var i = 0; i < boundaryChar.length; i++) {
      if (boundaryChar[i].localeCompare(c, 'zh-CN-u-co-pinyin') >= 0) {
        idx = i;
        break;
      }
    }
    return MAP[idx];
  }).value().join('');
}

var names_with_pinyin = _(names).map(function(name){
	var name_with_pinyin = {
    name: name,
    pinyin: getShortPinyin(name)
  }
  return name_with_pinyin;
}).sortBy('pinyin').value();

var pre = $("pre");
for(var i = 0; i < names_with_pinyin.length; ++i) {
  pre.text( pre.text() + names_with_pinyin[i].name + "(" + names_with_pinyin[i].pinyin + ")" + "\n" );
}