字⼤⼩排序,在数字相等的情况下。。。
笔试时候碰到的题⽬,不过这次不限时间,还是做出来了(可能并不是⼀个好的解法,仅供参考)思路: 写在注释⾥啦
const arr = [\"B3\ // 先按字母排序⼀下 let arr1 = arr.sort() // console.log(arr1)
// ['A2', 'A9', 'B1', 'B3', 'C1', 'D12', 'D2', 'F1', 'Z0']
// 转化为[{letter: 'B', number: '3'},...] 的类型 let arr2 = []
arr1.forEach((item) => {
arr2.push({ letter: item.slice(0, 1), number: item.slice(1) }) })
// console.log(arr2)
function compare(property) { return function (a, b) { var value1 = a[property] var value2 = b[property] return value1 - value2 } }
// 按照其中的 number 属性排序
let arr3 = arr2.sort(compare(\"number\")) // console.log(arr3)
// [{letter: 'Z', number: '0'}, {letter: 'B', number: '1'}...]类似于这样的 // 取出其中的 letter 值 和 number 值 let arr4 = []
arr3.forEach((item) => {
arr4.push(Object.values(item)) })
// console.log(arr4)
// [['Z', '0'],['B', '1']...] 这样的 // 打平数组并拼接起来 let arr5 = arr4.flat(Infinity) let arr6 = []
for (let i = 0; i < arr5.length; i++) { arr6.push(arr5[i] + arr5[i + 1])
i++ // 这⾥ i++ 是因为要把打平后的数组中的数据凉凉拼接起来 // 所以⼀次循环换要加两个循环变量 得到从0,2,4...拼接 }
console.log(arr6) // \"Z0\
因篇幅问题不能全部显示,请点此查看更多更全内容