【问题标题】:Would like to understand this re js merging arrays想了解这个 re js 合并数组
【发布时间】:2017-05-05 02:21:02
【问题描述】:

我在工作面试中遇到了编码挑战,我想看看是否有任何行善的人可以帮助我找出哪里出错了。我什至无法理解被问到的一般问题,所以我想知道是否有人有同样的感觉。这是整个问题:

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

[tagName, child1, child2, ...]

• 标签名称始终是数组中的第一个条目,并且是一个字符串。 • 子元素可以是数组或字符串。 • 如果子项是字符串,则将其视为纯文本,而不是 HTML 标记。 • 如果子元素是数组,则将其视为嵌套元素。 • 不支持属性、cmets 等,仅支持元素和文本。 实现一个 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("div");

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>

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

【问题讨论】:

  • 我有点困惑。你开始你的问题是谈论描述页面的数组并从数组生成页面,但我在你的逻辑中没有看到这样的数组。

标签: javascript html arrays dom


【解决方案1】:

所以我认为问题是在问你

  • 编写一个接受数组的函数。
  • 数组可以包含字符串或标签(div、p 等)
  • 编写一个迭代数组的函数,追加到 dom、元素和字符串。
  • 你总是会得到第一个标签名称,作为容器,后面的所有内容都应该在第一个标签内 [div, 'hey', p, 'paragraph'] =>

    div hey p paragraph p div

    这是否更有意义,这就是我解释问题的方式。必须取出 格式更清晰

【讨论】:

  • 非常感谢您的澄清。它的小事情可以使一切变得不同!直到您指出我没有阅读问题的地方,我才完全看到这一点。非常感谢:)
猜你喜欢
  • 2016-05-31
  • 2022-01-13
  • 1970-01-01
  • 1970-01-01
  • 2022-06-17
  • 2021-01-15
  • 2019-12-03
  • 2022-11-02
  • 1970-01-01
相关资源
最近更新 更多