一个很变态的业务需求
今天一个业务在测试项目的时候要求省的排序按照字母排序,很变态,已经提供了搜索,还提出这样无理的要求,不过谁叫人家是老板,没办法,只能乖乖的想怎么改了
一开始想着后端改改就行,不过为了验证自己,还是需要自己搞个骚操作的
测试数据
1 2 3 4 5 6 7 8 9 10 11
| let tmp = [ {name:'aq',age:1}, {name:'aqwe',age:1}, {name:'qwea',age:1}, {name:'aqwe',age:1}, {name:'xdfs',age:1}, {name:'hrt',age:1}, {name:'sfsd',age:1}, {name:'sdsdffa',age:1}, {name:'xv',age:1}, ]
|
解法1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| tmp = tmp .map(i => i.name) // 获取字符串数组 .sort() // 对字符串数组排序 .map(i => ({ ...tmp.find(a => i === a.name) })) // 按排序结果获取新的数组 .filter(i => i.name) // 过滤空的值
# 0: {name: "aq", age: 1} # 1: {name: "aqwe", age: 1} # 2: {name: "aqwe", age: 1} # 3: {name: "hrt", age: 1} # 4: {name: "qwea", age: 1} # 5: {name: "sdsdffa", age: 1} # 6: {name: "sfsd", age: 1} # 7: {name: "xdfs", age: 1} # 8: {name: "xv", age: 1}
|
解法2
我在测试sort()的传入函数返回参的时候发现它竟然返回的是正数和负数,而不是布尔值,很变态 也不知道我的这个方法是不是符合规范的,还是投机取巧了
1 2 3 4 5 6 7 8 9 10 11
| tmp = tmp.sort((a, b) => ([a.name, b.name].toString() === [a.name, b.name].sort().toString() ? -1 : 1))
# 0: {name: "aq", age: 1} # 1: {name: "aqwe", age: 1} # 2: {name: "aqwe", age: 1} # 3: {name: "hrt", age: 1} # 4: {name: "qwea", age: 1} # 5: {name: "sdsdffa", age: 1} # 6: {name: "sfsd", age: 1} # 7: {name: "xdfs", age: 1} # 8: {name: "xv", age: 1}
|