dataFilter.js 1.5 KB

var pinyin = require("chinese-to-pinyin");
/**
 * 按拼音第一个字母排序
 * @param {需要排序的数据表} arr 
 * 数据按name字段排序 (需注意)
 */
export function sortArr(arr, renderType) {
  if (arr.length) {
    let list = [];
    for (let i = 0, l = arr.length; i < l; i++) {
      let ltr = arr[i][renderType[0]];
      let letter = pinyin(ltr, {
        noTone: true,
        filterChinese: true
      }).substr(0, 1).toUpperCase();
      if (!/[a-z]/i.test(letter)) letter = '#';
      if (!(letter in list)) {
        list[letter] = [];
      }
      list[letter].push(arr[i]);
    }
    let result = [];
    for (var key in list) {
      result.push({
        letter: key,
        list: list[key]
      });
    }
    result.sort(function (x, y) {
      return x.letter.charCodeAt(0) - y.letter.charCodeAt(0);
    });
    if (result.length > 0 && result[0].letter === '#') {
      var last_arr = result[0];
      result.splice(0, 1);
      result.push(last_arr);
    }
    
    return result;
  } else {
    return []
  }
}
export function dataFilter(arr, renderType, keywords) {
   let ar = [];
   for (let i = 0, l = arr.length; i < l; i++) {
     let pin = pinyin(arr[i][renderType[0]], {
       noTone: true,
       filterChinese: true
     }).replace(/\s*/g, '');
     let key = pinyin(keywords, {
       noTone: true,
       filterChinese: true
     }).replace(/\s*/g, '')
     if (pin.toUpperCase().indexOf(key.toUpperCase()) >= 0) {
       ar.push(arr[i]);
     }
   }
   return ar;
   
}