我有一个产生动态嵌套列表的algorythmic问题。在输入时,我得到一个像这样的字符串数组:
[' A',' A',' / B',' // C',' / B&# 39;,' // C',' A',' A']
每个' /'是层次结构中的下一个级别,它是最后一个元素的直接子元素,具有较少的' /'迹象。具有相同数量的' /'标志处于同一水平。
[' A',' // C']或[' // C']等输入无效。
结果应该是层次结构中的HTML列表 一个 一个 -B - C -B - C 一个 甲
到目前为止我做的是: https://jsfiddle.net/k18Lbou7/
import cmath
def quadratic(a, b, c):
d = float(b**2 - 4*a*c)
x1 = ((-b)-cmath.sqrt(d))/(2*a)
x2 = ((-b)+cmath.sqrt(d))/(2*a)
return [x.real if (x.imag == 0.0) else x for x in [x1, x2]]
关键是我要复制一些键,或者避免不同方法中的最后一个元素。
也许有人可以通过发现不良结果的原因来帮助mi,或者提出解决此功能的不同方法。
非常感谢您的帮助!
答案 0 :(得分:1)
好的,我做了id。这是一个答案。
function createList(elements, parentElement) {
var parentsList = [parentElement];
var depth = 0;
elements.forEach(function(item) {
var match = item.text.match(/^\s*(\/+)/);
if(match) {
depth = match[0].length;
} else {
depth = 0;
}
var listElement = document.createElement('li');
var span = document.createElement('span');
span.innerHTML = item.text
listElement.appendChild(span);
if (parentsList.length-1 == depth) {
parentsList[parentsList.length-1].appendChild(listElement);
} else if (parentsList.length-1 < depth) {
var parentListElement = document.createElement('ul');
parentListElement.appendChild(listElement);
parentsList[parentsList.length-1].appendChild(parentListElement);
parentsList.push(parentListElement);
} else {
while (parentsList.length-1 > depth) {
parentsList.pop();
}
parentsList[parentsList.length-1].appendChild(listElement);
}
});
}
var el = document.createElement('ul');
var value = ['Home', '* This is active', '/This is dropdown', '// shhh...', '/ we ♥ you', '//Last one', 'asd', '/Last one', 'Last one']
.map(function(pLine) {
return {
'text': pLine,
'page_id': null
};
});
createList(value, el);
document.body.appendChild(el);