我正在寻找一种转换字符串数组的方法,如:
['AABBCC','AABBDD','BBBBTT','BBVVDD']
进入分层json:
{
"code": "AA",
"sub": [
{
"code": "BB",
"sub": [
{
"code": "CC"
},
{
"code": "DD"
}
]
}
]
}
等等BB元素。使用前2个字母为第一组构建,而另外2个为第二组构建。 关于如何解决这个问题的任何想法?
非常感谢
答案 0 :(得分:0)
此提案针对给定的迭代数组提供了特征
Array.prototype.forEach()
forEach()
方法每个数组元素执行一次提供的函数。
并分割字符串String.prototype.match()
match()
方法在将字符串与正则表达式匹配时检索匹配。
some()
方法测试数组中的某个元素是否通过了由提供的函数实现的测试。
如果找到code
,则sub
的引用将用于下一级别。
如果没有,则将新对象推送到实际数组。
var data = ['AABBCC', 'AABBDD', 'BBBBTT', 'BBVVDD'],
obj = [];
data.forEach(function (a) {
var o = obj, keys = a.match(/.{1,2}/g);
keys.forEach(function (k) {
var oo = { code: k, sub: [] };
if (!o.some(function (b) {
if (b.code === k) {
o = b.sub;
return true;
}
})) {
o.push(oo);
o = oo.sub;
}
});
});
document.write('<pre>' + JSON.stringify(obj, 0, 4) + '</pre>');
&#13;