gpt4 book ai didi

javascript - 将 javascript 对象转换为 HTML

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:21:12 24 4
gpt4 key购买 nike

所以我需要一个转换类型为js对象的函数:

{node: 'X', children: [{node: 'Y'}]}

与 html 类似的字符串的任意深度。例如上面的应该被转换成类似的东西:

'<div class="X"><div class="Y"></div></div>'

这在某种程度上应该是直观的,即节点相互插入的顺序与 div 相同。所以这就是我到目前为止所拥有的:

function convertObj(obj){
const html_start = '<div class="';
const html_end = '</div>';
let current_parent = obj;
let child_nodes = '';
console.log(current_parent, current_parent.children)
if( typeof( current_parent.children)!= 'undefined'){
let childrn = current_parent.children.map(child_node => convertObj(child_node) )
child_nodes = child_nodes + childrn
}
return html_start+current_parent.node+'">'+child_nodes+html_end;
}

问题是子节点之间的 , 如果它们的数量是多个的话。这是我的笑话测试,它失败了

describe('convertObj', () => {
it('should turn node value to a div with class of the same name', () => {
expect(convertObj({node: 'A'})).toBe('<div class="A"></div>');
});
it('should incert nodes in children to parent node', () => {
expect(convertObj({node: 'A', children:[{node : 'B'}]})).toBe('<div class="A"><div class="B"></div></div>');
expect(convertObj({node: 'A', children:[{node : 'B'}, {node: 'C', children: [{node: 'D'}]}]})).toBe('<div class="A"><div class="B"></div> <div class="C"><div class="D"></div></div></div>');
});
});

感谢帮助!您可以运行测试 here

最佳答案

使用更多 ES6 语法糖,例如 object destructuring和一个 template literal ,你可以做一个非常简单的递归实现:

const convertObj = ({ node, children = [] }) =>
`<div class="${node}">${children.map(convertObj).join(' ')}</div>`

const tree = {node: 'A', children:[{node : 'B'}, {node: 'C', children: [{node: 'D'}]}]}

console.log(convertObj(tree))

关于javascript - 将 javascript 对象转换为 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50728240/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com