写组件的时候,遇到一个需要地区排序的方法,记录一下,页面要求是这个样子的:
方法一:
传入的数据:
provinceList: [
{
group: 'F',
ata: ['福建省']
},
{
group: 'A',
data: ['安徽省']
},
{
group: 'H',
data: ['河北省', '河南省', '黑龙江省', '湖北省']
},
{
group: 'G',
data: ['甘肃省']
},
{
group: 'B',
data: ['北京市']
}
],
处理并排序:
pySegSort (arr) {
if (!String.prototype.localeCompare) return null;
let letters = 'ABCDEFGHJKLMNOPQRSTWXYZ'.split('');
this.provincesList = letters.map(item => {
var obj = {
letter: item,
data: []
};
return obj;
});
arr.forEach(item => {
let index = letters.indexOf(item.group);
if (index > -1) {
this.provincesList[index].data = item.data;
}
});
console.log(this.provincesList);
},
方法二:
传入的数据格式为:
listdeta: {
H: ['河南', '河北'],
A: ['安徽'],
B: ['北京'],
C: ['成都']
}
处理数据的方法:
init () {
let citys = [];
let allCityes = [];
for (let i = 65; i <= 90; i++) {
if (this.listdeta[String.fromCharCode(i)]) {
citys[String.fromCharCode(i)] = this.listdeta[String.fromCharCode(i)];
}
}
allCityes = citys;
console.log('all', allCityes);
}
方法三:
传入的数据:
listDate: ['河南', '北京', '河北', '安徽', '乌鲁木齐', '郑州']
处理数据的方法:
pySegSort1 (arr) {
if (!String.prototype.localeCompare) return null;
let letters = 'ABCDEFGHJKLMNOPQRSTWXYZ'.split('');
var zh = '阿八嚓哒妸发旮哈讥咔垃痳拏噢妑七呥扨它穵夕丫帀'.split('');
var segs = [];
var curr;
letters.forEach(function (item, i) {
curr = { letter: item, data: [] };
arr.forEach(function (item2) {
if (
(!zh[i - 1] || zh[i - 1].localeCompare(item2) <= 0) &&
item2.localeCompare(zh[i]) == -1
) {
curr.data.push(item2);
}
});
if (curr.data.length) {
segs.push(curr);
curr.data.sort(function (a, b) {
return a.localeCompare(b);
});
}
});
console.log(segs);
return segs;
},