想了解这个re js合并数组

时间:2016-12-19 23:28:05

标签: javascript html arrays dom

我接受了面试的编码挑战,我想看看是否有任何好的行动者可以帮我看看我哪里出错了。我甚至无法理解被问到的一般性问题所以我想知道是否有人有同感。这是整个问题:

HTML的简化版本可以通过使用数组来表示元素来表示:

[tagName, child1, child2, ...]

•标记名称始终是数组中的第一个条目,并且是一个字符串。 •子项可以是数组或字符串。 •如果子项是字符串,则将其视为纯文本,而不是HTML标记。 •如果子节点是数组,则将其视为嵌套元素。 •不支持属性,注释等,只支持元素和文本。 实现一个JavaScript函数,它接受一个数组并生成HTML字符串。 •空标签应该是自动关闭的。 •在完成的输出中合并连续的文本节点。 •没有库,构建过程或转换器。 例子:

['div'] => '<div/>'
['h1', 'Text'] => '<h1>Text</h1>'
['span', 'More', 'Text'] => '<span>MoreText</span>'
['a', ['b', 'More'], ' Text'] => '<a><b>More</b> Text</a>'
['p', '<b>Text</b>'] => '<p>&lt;b&gt;Text&lt;/b&gt;</p>'

我的回答如下:

<html>
<head>
<title>title here</title>
<meta charset="UTF-8">
<meta name="description" content="">
<meta name="keywords" content="">

<style>
div{
background: yellow;
}
    </style>
</head>
<body>
<section>
<h1>I am a <br>header</h1>
<p id="demo"></p>
<div></div>
</section>
<script>
document.getElementById("demo").innerHTML =
"The title of this document is: " + document.title;
</script>

<script>

var wrapper = document.createElement(&#34; div&#34;);

wrapper.appendChild( document.createTextNode("Part 1 ") );
wrapper.appendChild( document.createTextNode("Part 2 ") );

// At this point, wrapper.childNodes.length === 2
wrapper.childNodes[0].textContent === "Part 1 "
wrapper.childNodes[1].textContent === "Part 2 "

wrapper.normalize();

// Now, wrapper.childNodes.length === 1
wrapper.childNodes[0].textContent === "Part 1 Part 2 "   

    </script>
</body>
</html>

我确实看到我的文字没有合并;但我以为我遵循了其余的要求。我发现这些要求有点难以理解。非常感谢任何评论。

1 个答案:

答案 0 :(得分:0)

所以我认为问题是问你

  • 编写一个带数组的函数。
  • 数组可以包含字符串或标记(div&#39; s,p等)
  • 编写一个迭代数组的函数,附加到dom,元素和字符串。
  • 你总是会得到第一个标签名称,作为容器,以下所有内容都应该在第一个标签内[div,&#39;嘿嘿&#39;,p,&#39;段落&#39;] =&GT;

    div hey p paragraph p div

    这是否更有意义,这就是我如何解释这个问题。不得不拿出&lt;&gt;所以格式化更清晰