js 数组拆分以及拼接
['140200', '140300', '140400', '220300', '220400']
这样一个数组,有什么办法可以让14开头的拼接在一起,22开头的拼接在一起,可能还有其他很多6位数,怎么让6位数的前两个相同的拼接在一起,最后是这样
['140200,140300,140400', '220300,220400']
2 人参与回答
既然都是 6 位数字组成的字符串,直接排序就是需要的结果(Array.prototype.sort()
本身就是按字符序排)
data.sort();
如果要按原来出现的顺序:(注意下例示例代码中 data 改了数据顺序的)
const data = ["140200", "220300", "140400", "140300", "220400"]; const r = data .reduce( (result, s) => { const key = s.substring(0, 2); const arr = result.find(([it]) => it.startsWith(key)); if (arr) { arr.push(s); } else { result.push([s]); } return result; }, [] ) .flat(); console.log(r); // [ '140200', '140400', '140300', '220300', '220400' ]
function splice(arr) { var ret = []; loop: for (var i = 0; i < arr.length; ++i) { for (var j = 0; j < ret.length; ++j) { if (ret[j].slice(0, 2) === arr[i].slice(0, 2)) { ret[j] += "," + arr[i]; continue loop; } } ret.push(arr[i]); } return ret; } console.dir(splice(["140200", "140300", "140400", "220300", "220400"]));