您的当前位置:首页【js】js实现对一个数组(每一项都是由数字和字母的)先按数字大小排序,在数字相等的情况下。。。

【js】js实现对一个数组(每一项都是由数字和字母的)先按数字大小排序,在数字相等的情况下。。。

2024-03-31 来源:乌哈旅游
【js】js实现对⼀个数组(每⼀项都是由数字和字母的)先按数

字⼤⼩排序,在数字相等的情况下。。。

笔试时候碰到的题⽬,不过这次不限时间,还是做出来了(可能并不是⼀个好的解法,仅供参考)思路: 写在注释⾥啦

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\

因篇幅问题不能全部显示,请点此查看更多更全内容