console
const data = [
"B3","D2","F1","A9","D12",
"A2","C1","Z0","B1","Z0",
"B1","C1","F1","A2","D2",
"B3","A9","D12"
]
let newData = dataSort(data)
function checkData(dataList){
let isCheck = true
for(let i = 0;i < dataList.length;i++){
dataList[i]
}
return isCheck
}
function dataSort(dataList){
let jsonData = splitData(dataList)
let numerSortData = arraySortByKey(jsonData,'number')
let typeSortData = arraySortByKey(numerSortData,'type')
return dataBack(typeSortData)
}
function dataBack(typeSortData){
let dataList = []
for(let i = 0;i < typeSortData.length;i ++){
let obj = typeSortData[i]
let str = obj.type + String(obj.number)
dataList.push(str)
}
return dataList
}
function arraySortByKey(dataList,key,desc = true){
return dataList.sort((prev,next)=>{
if(desc){
if(typeof prev[key] === 'string'){
return prev[key].localeCompare(next[key])
}else{
return prev[key] - next[key]
}
}else{
if(typeof next[key] === 'string'){
return next[key].localeCompare(prev[key])
}else{
return next[key] - prev[key]
}
}
})
}
function isArray(dataList) {
if (typeof Array.isArray === 'undefined') {
return Object.prototype.toString.call(dataList) === '[object Array]'
}
return Array.isArray(dataList)
}
function splitData(dataList){
if(!isArray(dataList)) return []
let jsonData = []
dataList.forEach((item,index)=>{
let type = item.charAt(0)
let number = Number(item.substr(1,item.length))
jsonData.push({
type,
number
})
})
return jsonData
}
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<title>测试代码。。。 - JSRUN 驱动</title>
</head>
<body>
<div style="height:200px">
<textarea
rows="10"
name="dataInput"
placeholder="输入数据源..."
><textarea>
</div>
<input type="button" value="确定"/>
</body>
</html>
div{
width: 100%;
}
textarea{
display: block;
padding: 12px;
outline: none
}