鍍金池/ 問答/HTML/ 請寫一個函數(shù),輸入是字符串,輸出時數(shù)組?

請寫一個函數(shù),輸入是字符串,輸出時數(shù)組?

題目描述

題目來源及自己的思路

相關(guān)代碼

// 請把代碼文本粘貼到下方(請勿用圖片代替代碼)

字符串

  1. ?A1,B1,C1,C2,B2,A2,D1,D2,D3
  2. ?E1,E2,E3,F(xiàn)1,F(xiàn)2,F(xiàn)3

字符串類型特特點:字符串里面的每個TOKEN都是 字母+數(shù)字,需要對字符串做做一個函數(shù)處理得到下面結(jié)果
題中只給了兩個符合上面規(guī)則的字符串,符合上面規(guī)則的字符串是無限的。
?
字符串1結(jié)果:
A -->{A1,A2}
B -->{B1,B2}
C -->{C1,C2}
D-->{D1,D2,D3}
?
字符串2結(jié)果:
E -->{ E1,E2,E3}
F -->{F1,F2,F3}

你期待的結(jié)果是什么?實際看到的錯誤信息又是什么?

回答
編輯回答
喵小咪

以lodash為例,用groupBy函數(shù)

let test = "A1,B1,C1,C2,B2,A2,D1,D2,D3";
let result = _.groupBy(test.split(','), item => item[0]);
console.log(result);

//結(jié)果
A: (2) ["A1", "A2"]
B: (2) ["B1", "B2"]
C: (2) ["C1", "C2"]
D: (3) ["D1", "D2", "D3"]
2017年10月27日 22:37
編輯回答
故人嘆
'A1,B1,C1,C2,B2,A2,D1,D2,D3'.split(',').reduce((s,v)=>{
    var _first = v[0];
    if(!s[_first]) s[_first] = [];
    s[_first].push(v)
    return s;
},{})

clipboard.png

2018年9月2日 18:11
編輯回答
青瓷
function toArray(str){
    str = str || ''
    str = str.split(',')
    var k,
        result = {}
    str.forEach(item=>{
        item = item.trim()
        k = item.replace(/\d+$/,'')
        result[k] ? result[k].push(item) : (result[k] = [item])
    })
    return result
}
toArray('A1,B1,C1,C2,B2,A2,D1,D2,D3')
//{"A":["A1","A2"],"B":["B1","B2"],"C":["C1","C2"],"D":["D1","D2","D3"]}
toArray('E1,E2,E3,F1,F2,F3')
//{"E":["E1","E2","E3"],"F":["F1","F2","F3"]}
2017年1月5日 17:29